if和while语句使用关系表达式作为测试条件,有时需要要把多个表达式连接在一起使用。例如编写一个程序,判断字符串中是否包含‘a’或‘b’字符,这时可以用逻辑运算符判断。
C语言中常见的逻辑运算符如下:
逻辑运算符 | 含义 |
&& | 与 |
|| | 或 |
! | 非 |
规则如下,表达式1和表达式2是两个简单的表达式,则:
(1)当且仅当表达式1和表达式2同时为真时,表达式1 && 表达式2才为真。
布尔值 | 布尔值 | 与关系 |
真 | 真 | 真 |
真 | 假 | 假 |
假 | 真 | 假 |
假 | 假 | 假 |
(2)如果表达式1或表达式2为真,则表达式1 || 表达式2为真。
布尔值 | 布尔值 | 或关系 |
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
(3)如果表达式1为假,则!表达式1就为真。
布尔值 | 非关系 |
真 | 假 |
假 | 真 |
10 > 8 && 20 > 10,两个表达式都为真,与关系为真。
10 > 8 || 2 > 10,只有一个表达式为真,或关系为真。
!(10 > 5),10 > 5为真,但!真为假。
在C99标准中新增了可以替代逻辑运算符的拼写。
原有 | iso646.h |
&& | and |
|| | or |
! | not |
!的优先级最高,其次是&&优先级次之,||最低。
举例来说,表示分数值的范围0到100,可以采用:
score >= 0 && score <= 100
不能使用数学写法:
0 <= score <= 100
还可以采用范围测试一个字母是否是小写或大写字母,如下:
ch >= ‘a’ && ch <= ‘z’