C语言成长之路27:关系运算符和逻辑运算符
课程地址:点击进入
关系运算符有以下几个:
> < >= <= == !=
> 大于
< 小于
>= 大于等于
<= 小于等于
== 恒等
!= 不等于
关系运算符作用:描述两个事物之间的关系
注:由于C语言当中没有Bool类型的数据类型,不过还是存在真假的概念,非0为真,0为假;
逻辑运算符有以下几个:
&& || !
&& 逻辑与:当&&左右两边的结果都为真时,则这个逻辑运算为真,只要其中一边不为真,结果就为假;
|| 逻辑或:当||左右两边其中一个结果为真时,这个逻辑运算即为真,当两个条件都不符合时,结果就为假;
! 逻辑非:真的变假的,假的变真的,其实就是真假互换;
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <limits.h> 4 5 void main(){ 6 /* C语言成长之路27:关系运算符和逻辑运算符 7 * 8 */ 9 int heightOne = 140; 10 int heightTwo = 230; 11 int bool = heightOne > heightTwo; 12 printf("\nbool = %d",bool); // bool = 0 13 while (heightOne > heightTwo){ // 当括号内条件为真,则会一直循环打印66666 14 printf("\n66666"); 15 } 16 17 // 呵呵老师总是开车,他对body大于80分并且颜值也在80分以上的妹子才感兴趣 18 int body = 80; 19 int face = 70; 20 if (body > 80 && face > 50){ // 很显然,这个妹子入不到呵呵老师的法眼 21 printf("\nyes"); 22 } else{ 23 printf("\nno"); 24 } 25 26 if (body > 80 || face > 60){ // 像呵呵老师的赛车手太难找到女朋友了,只能“委曲求全” 27 printf("\ni can!"); 28 } else{ 29 printf("\nno no no!"); 30 } 31 32 if (body != 80){ 33 printf("\n body=80"); 34 } else { 35 printf("\n nice"); // 由于body = 60,所以会打印出nices 36 } 37 };
练习题:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <limits.h> 4 5 void main(){ 6 /* 7 * 练习题:设int a = 3; b = 4; int c = 5;下列表达式不为1的是: 8 * A) a + b > c && b == c; B) a || b + c && b - c 9 * C) !(a > b) && !c || 1 D) !(a + b) + c - 1 && b + c /2 10 */ 11 int a = 3; 12 int b = 4; 13 int c = 5; 14 15 // A) a + b > c && b == c; 16 int c1 = a + b > c && b == c; 17 printf("\nc1 = %d",c1); // c1 = 0 18 /* 过程分析:加减运算符 > 关系运算符 > 相等运算符 > 逻辑与运算符 19 * 1-->a + b = 3 + 4 =7 20 * 2-->7 > c = 7 > 5 显然是个错假的,所以是0 21 * 3-->b == c = 4 == 5 显然也是个错的,所以是0 22 * 4--> 0 && 0 -->结果是0 23 */ 24 25 // B) a || b + c && b - c 26 int c2 = a || b + c && b - c; 27 printf("\nc2 = %d",c2); // c2 = 1 28 /* 过程分析:加减运算符 > 逻辑与运算符 > 逻辑或运算符 29 * 1-->b + c = 4 + 5 = 9; 30 * 2-->b - c = 4 - 5 = -1; 31 * 3-->9 && -1 = 1; 32 * 4-->a || 1 = 3 || 1 = 1; 33 */ 34 35 // C) !(a > b) && !c || 1 36 int c3 = !(a > b) && !c || 1; 37 printf("\nc2 = %d",c3); // c2 = 1 38 /* 过程分析:括号运算 > 逻辑非 > 逻辑与 > 逻辑或 39 * 1-->(a > b) = 3 > 4 = 0 不成立 40 * 2-->!0 = 1; 41 * 3-->!c = !5 = 0; 42 * 4-->1 && 0 = 0; 43 * 5-->0 || 1 = 1; 44 */ 45 46 // D) !(a + b) + c - 1 && b + c /2 47 int c4 = !(a + b) + c - 1 && b + c /2; 48 printf("\nc4 = %d",c4); // c4 = 1 49 /* 过程分析:括号运算 > 逻辑非 > 乘除 > 加减 > 逻辑与 50 * 1-->(a + b) = 3 + 4 = 8; 51 * 2-->!8 = 0; 52 * 3-->c / 2 = 5 / 2 = 2; 53 * 4-->0 + c - 1 = 0 + 5 - 1 = 4; 54 * 5-->b + 2 = 4 + 2 = 6; 55 * 6-->4 && 6 = 1; 56 */ 57 };