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 };

 

posted @ 2020-07-22 16:37  Akne  阅读(401)  评论(0编辑  收藏  举报