关系运算符和逻辑运算符
<(小于)
<=(小于或等于) 优先级相同(高)
>(大于)
>=(大于或等于)
==(等于) 优先级相同(低)
!=(不等于)
关系运算符得到的值是一个逻辑值(只有真或假)
C语言用1表示真,用0表示假
用关系运算符将两边的变量,数据或表达式连接起来,称之为关系表达式
1<2 得到的就是1
'a'+'b'<='c'(要用到十进制的ASCII码,'a'=97,'b'=98,'c'=99)
(a=3)>(b=5) 得到的值为0
#include
int main()
{
int a=5,b=3;
printf("%d\n",1<2);
printf("%d\n",a>b);
printf("%d\n",a<=b+1);
printf("%d\n",'a'+'b'<='c');
printf("%d\n",(a=3)>(b=5));
return 0;
}
结果
1
1
0
0
0
逻辑运算符
|
运算符 |
含义 |
优先级 |
举例 |
说明 |
|
! |
逻辑非 |
高 |
!a |
如果a为真,!a为假;如果a为假,!a为真。 |
|
&& |
逻辑与 |
中 |
a&&b |
只有a和b同时为真,结果才为真;只要a和b其中一个为假,结果为假。 |
|
|| |
逻辑或 |
低 |
a||b |
只要a或b其中一个为真,结果为真; 只有a和b同时为假,结果才为假。 |
3>1 && 1<2 (11)返回1
3+1 || 2==0 (3加1为4,非零,真的,后面假的)所以返回1
#include <stdio.h>
int main()
{
int a=5,b=3;
printf("%d\n",3>1&&1<2);
printf("%d\n",3+1||2==0);
printf("%d\n",!(a+b));
printf("%d\n",!0+1<1||!(3+4));
printf("%d\n",'a'-'b'&&'c');
return 0;
}
结果
1
1
0
0
1
备注:结果不是0,就是真的
短路求值
短路求值又称最小化求值,是一种逻辑运算符的求值策略。只有当第一个运算数的值无法确定逻辑运算的结果时,才对第二个运算数进行求值。
#include <stdio.h>
int main()
{
int a=3,b=3;
(a=0)&&(b=5);
printf("a=%d,b=%d\n",a,b);
(a=1)||(b=5);
printf("a=%d,b=%d\n",a,b);
return 0;
}
结果
a=0,b=3
a=1,b=3
只要左边不成立了,右边就不会再进行计算(结合性左到右)
浙公网安备 33010602011771号