文章目录
1.逻辑值
C语言中木有专用的逻辑值,1代表逻辑真,0代表逻辑假
0代表逻辑假,!0代表逻辑真
C语言中:任何非零的数都当做为真!!!!
int a=4,b=-5,c=b+5;
!a------0
!a||b&&c-------0
0||b&&c
0||0
b&&c-----0
a||c-----1
2.关系运算符
> < >= <= != ==
超级大陷阱:关系运算符永远是两两进行比较滴!!!!!!!
建议:不要连着比较
int a=b=c=5;----不OK
int a=12,b=6;
printf("%d\n",a>b);
1
int a,b,c;
a=12;
b=10;
c=8;
printf("%d\n",a>b>c);
1>c
0
3.逻辑运算符
逻辑与 && 并且
逻辑或 || 或者
逻辑非 ! 取反
a&&b 若a,b同时为真,结果才为真
a||b 若a,b其中有一个为真,则结果为真
!a a为真,则!a为假;a为假,则!a为真
4.优先级
逻辑非>算数运算符>关系运算符>逻辑与>逻辑或>条件运算符>赋值运算符>逗号运算符
5.短路现象
-
a&&b&&c: a为假,整个结果都为假,b和c不需要搭理(判断/执行/处理)–短路
只有a为真的时候才需要判断b的值
只有a和b都为真才需要考虑c的值 -
a||b||c: a为真,整个结果为真,b和c不需要搭理(判断/执行/处理)–短路
只有a为假的时候才需要判断b的值
只有a和b都为假才需要考虑c的值
int m=10,n=0,a=1,b=3,c=14,d=7,i,j;
i=(m=a<b)&&(n=c>d);
1 1 1
printf("%d\n",i,m,n);
j=(m=a<b)||(n=c>d);---短路--n=c>d不执行,不进行任何处理
1 1 0
printf("%d\n",j,m,n);
6.选择结构if语句
if(表达式)语句;
int a=5,b=4,c=6;
if(a>b)c=a+b;/*if后面条件为真,执行c=a+b*/
printf("%d\n",c);
9
int a=5,b