C提供的逻辑运算符共有以下3种
运算符 | 含义 | 举例 | 运算规则 |
&& | 逻辑与 | a&&b | 若a、b全为真,结果为真 否则,结果为假。 |
|| | 逻辑或 | a||b | 若a、b全为假,结果为假 否则,结果为真。 |
! | 逻辑非 | !a | 若a为真,结果为假 否则,结果为真。 |
用逻辑运算符把操作数连接起来的式子称为逻辑表达式。其值仅可能为真(1)或假(0)。
例6、 !(x<3) ~ 真(1),当x≥3时
假(0),其他情况
例7、 (x<3)||(x>=10) ~假(0),当x∈[3,10)
真(1),其他情况
例8、假设a<c, (a<=b)&&(b<=c) ~真(1),当b∈[a,c]
假(0),其他情况
逻辑运算符的优先级和结合性如下表所示。由此可以看出:
运算符 | 优先级 | 结合性 |
! | 高 | 自右至左 |
算术 | ||
关系 | ||
&& |
| 自左至右 |
|| | 自左至右 | |
赋值 | 低 |
&&的优先级高于||,!最高
算术运算符、关系运算符的优先级高于&&、||。
赋值运算符的优先级低于&&、||。
&&、||的结合性是自左向右
求解逻辑表达式应注意问题
1、在C中,任何一个非零数据都被认为是真的。
例假设 a=2,b=3, !a 的值为0
4&&0||2 的值为1
!0 的值为1
2、&&、||要求先对左侧操作数求值,而且一旦能够确定表达式的值就立即停止求解过程。
① (x!=0)&&(1/x==y)
② int x=1; (2>3)&&(x=5)
常用的关系表达式和逻辑表达式
1、判别整数n能否被7整除的表达式 n%7==0
2、判别整数n是否为偶数的表达式 n%2==0
3、判别变量x的值是否介于a、b之间的表达式 x>=a && x<=b
4、判别字符变量ch是字母的表达式 (ch>=’a’&& ch<=’z’)||(ch>=’A’&& ch<=’Z’)
5、判别年份year是否为闰年的表达式
(year%4==0 && year%100!=0) || year%400==0