逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式。
一、常见逻辑运算符
就是 与 或 非
逻辑运算符 | 描述 | 功能 |
---|---|---|
&& | 与运算符 | 两个条件都要满足 |
|| | 或运算符 | 两个条件只需满足其一 |
! | 非运算符 | 否定条件 |
任何非零值都表示真,零值表示伪
二、短路现象
我们都知道初中物理上的电路短路吧,当给小灯泡两端接入一个导线时,小灯泡就被短路了。
与上述类似,当表达式已经可以判断出结果后就不会继续执行后面的代码
例如ture || false
中,判断前面是 true 时,就不用再管后面的 false 了,因为他已经不影响结果了。
1.&&
a && b
当 a 为假(或0)时,因为a && b 结果必定为 0,所以不再执行表达式 b
当 a 为真(非0)时,因为a && b 结果不确定,所以会继续求解表达式b
例如下面这段代码,已经知道 i 的结果为 0,故i && j++ > 0
的结果必定为 0,所以也就不用再执行j++ > 0
了
int i = 0;
int j = 10;
if(i && j++ > 0){
printf("1111");
}else{
printf("2222"); // 执行
}
printf("%d\n",j); // 10
2.||
a || b
当 a 为真(非0)时,因为a || b 结果必定为 1,所以不再执行表达式 b
当 a 为假(或0)时,因为a || b 结果不确定,所以会继续求解表达式b
例如下面这段代码,已经知道 i 的结果为 1,故i || j++ > 0
的结果必定为 1,所以也就不用再执行j++ > 0
了
int i = 1;
int j = 10;
if(i || j++ > 0){
printf("1111"); // 执行
}else{
printf("2222");
}
printf("%d\n",j); // 10