一.逻辑运算符
判断真假 结果只能为真(1),假(0),且表达式非0即真
表示真:非0
表示假:0,“\0”(空字符)
1.或 :表达式1 || 表达式2
规则:有一个为真,结果就是真;全部是假的,结果输出假
例如以下代码:
#include<stdio.h>
int main(){
printf("%d \n", 1 > 0);// 1
printf("%d \n", 1 < 0);// 0
printf("%d \n", 1 < 0 || 1 > 0);// 1
printf("%d \n", 1 || 1 > 3); //1
printf("%d \n", 0 || 1 > 3); //0
printf("%d \n", 1.2 || 5.6); //1
}
结果如图所示:
2.于:表达式1 && 表达式2
规则:全是真,结果为真;一个为假。结果为假
例如以下代码:
#include<stdio.h>
int main(){
printf("%d \n", 1 < 0 && 1 > 0);// 0
printf("%d \n", 1 < 2 && 5 > 3);// 1
printf("%d \n", 1 < 0 && 1 > 0);// 0
}
结果如图所示:
3.非:!表达式
规则:取反,假的取真;真的取假 (包括取反再取反)
例如以下代码:
#include<stdio.h>
int main(){
printf("%d \n", ! (1 > 0));// 0
printf("%d \n", ! 0 );// 1
printf("%d \n", ! 0.01);// 0
printf("%d \n", !!2 );// 0
}
运算结果如下图所示:
特殊:
逻辑运算符的短路:
如果“&&”运算符左边的值为假,就不再对其右边的表达式进行计算,整个表达式的结果为假.
如果“||”运算符左边的值为真,就不再对其右边的表达式进行计算,整个表达式的结果为真.
例如以下代码:
#include<stdio.h>
int main(){
int i = 0;
2 > 3 && (i = 1);
printf("%d \n", i); // 0
int j = 0;
3 > 2 || (j = 1);
printf("%d \n", j); // 0
}
运算结果如图所示: