逻辑运算和判断选择
这里要考虑到优先级的问题:
1.!(非)
2.算数运算符
3.关系运算符
4.&&和||
5. 赋值运算符
关系运算符内部:>,<,>=,<=优先于==,!=
一、关于优先级的几个例子
b+c <a
由于算术运算符先算,所以等价于(b+c)<a
a==b < c
==是关系运算符,由于关系运算符内部的原则.所以b<c先算,a==后算,等价于a==(b<c)
注:
a = b<c
这时a =是赋值运算,优先级小于关系运算,所以等价于a = (b<c) (这时个坑,而且不好找)
二、关于写法:
if('c' && 'd') { //printf("true"); }
这么写也行,但是比较脑残
三、关于多个逻辑运算:
&&会一个一个判断,如果有一个为false,后面的就不会判断
||判断时,如果有一个为true,后面的就不会判断
int a = 1; if(3> 5 && (a = 8)) { } printf("a =%d\n",a);
a =1 请按任意键继续. . .
这里(a = 8)的赋值没有被执行
int a = 1; if(5>3 && (a = 8)) { } printf("a =%d\n",a);
a =8 请按任意键继续. . .
这里被执行了,a = 8
同理,|| 也是这样
int a =1; if(4>3 || (a = 8)) {} printf("a = %d\n",a);
a = 1 请按任意键继续. . .
int a =1; if(3>4 || (a = 8)) {} printf("a = %d\n",a);
a = 8 请按任意键继续. . .
在这里说明这些是因为以后有可能涉及到赋值,如果有这种运算,有可能赋值就不会被执行(虽然不太可能)

浙公网安备 33010602011771号