预计阅读本页时间:-
总结:逻辑运算符和表达式
逻辑运算符:
逻辑运算符通常使用关系表达式作为操作数。!运算符带一个操作数。其他两个逻辑运算符带有两个操作数:一个在左边,一个在右边。
运算符 意义
&& 与
II 或
! 非
逻辑表达式:
当且仅当两个表达式都为真时,expressionl&&expression2为真。如果其中一个为真或两个表达式都为真,expression1||expression2为真。如果expression为假,则!expression为真,反之亦然。
求值顺序:
逻辑表达式是从左到右求值的。一旦发现有使表达式为假的因素,立即停止求值。
例如:
7.3.4 范围
可以把&&运算符用于测试范围。例如,若要检查90到100范围内的得分,可以这样做:
一定要注意避免效法像下面这样的数学上常用的写法:
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
问题在于该代码是个语义错误,而不是语法错误,所以编译器并不会捕获它(尽管可能会发出警告)。因为对<=运算符的求值顺序是由左到右的,所以会把该测试表达式解释为如下形式:
子表达式90<=range的值为1(真)或0(假)。任何一个值都小于100,因此不管range的值是什么,整个表达式总为真,所以需要使用&&来检查范围。
大量现有代码利用范围测试来检测一个字符是不是(比方说)小写字母。例如,假设ch是个char变量:
这对于像ASCII那样的字符编码可以工作,因为在这种编码中连续字母的编码是相邻的数值。然而,对于包括EBCDIC在内的一些编码就不正确了。进行这种测试的移植性更好的方法是使用ctype.h系列(请参见表7.1)中的islower()函数:
不管使用哪种特定的字符编码,islower()函数都能很好地运行(不过,一些早期的实现没有ctype.h系列的头文件)。