C语言中的逻辑运算符(&&、||和!)
C语言中的逻辑运算符有 3 个,分别是 &&、|| 和 !,如下表所示:
接下来将逐个讲解它们的用法,文章最后还会给出它们的优先级。
“&&”是双目运算符,“&&”的左右两侧都有关系表达式,当两个关系表达式都成立时,“&&”表达式的返回值是真值(1);当两个关系表达式有一个成立时,“&&”表达式的返回值是假值(0)。
例如:
再如:
再如:
综上所述,我们可总结“&&”(逻辑与)表达式最终返回的结果值,如下表所示:
从表中可总结出:对于&&(逻辑与)表达式来说,两个操作数中有一个操作数是 0,结果就是 0。
当然,“&&”运算符两侧也可以是变量,例如:
“||”也是双目运算符,在“||”左右两侧都有关系表达式,当两个关系表达式有一个成立时,“||”表达式的返回值是真值(1);当两个关系表达式都不成立时,“||”表达式的返回值是假值(0)。
例如:
再如:
再如:
综上所述,我们可总结“||”(逻辑或)表达式最终返回的结果值,如下表所示:
从表中可总结出:对于“||”(逻辑或)表达式来说,两个操作数中有一个操作数是 1,结果就是 1。
当然,“||”运算符两侧也可以是变量,例如:
“!”是单目运算符,只有一个操作数。例如:
再如:
综上所述,我们可总结“!”(逻辑非)表达式最终返回的结果值,如下表所示。
当然,“!”运算符的操作数也可以是变量,例如:
以上带有操作数和“!”运算符的式子都称为“!”表达式,“!”表达式最终返回的值是真值或假值,通常会用在选择控制语句和循环语句中。
逻辑运算符的优先级从高到低依次为单目逻辑非运算符“!”、逻辑与运算符“&&”和逻辑或运算符“||”。逻辑运算符的优先级与结合性如下表所示。
符号 | 含义 | 说明 |
---|---|---|
&& | 逻辑与 | 对应数学中的“且” |
|| | 逻辑或 | 对应数学中的“或” |
! | 单目逻辑非 | 对应数学中的“非” |
接下来将逐个讲解它们的用法,文章最后还会给出它们的优先级。
C语言&&运算符
&&
运算符在 C语言中表示逻辑与运算符,它通常与关系表达式一起用,“&&”表达式返回的结果是真值(1)或者假值(0)。“&&”是双目运算符,“&&”的左右两侧都有关系表达式,当两个关系表达式都成立时,“&&”表达式的返回值是真值(1);当两个关系表达式有一个成立时,“&&”表达式的返回值是假值(0)。
例如:
3>2&&2>1;这行代码表示“3 大于 2 为真并且 2 大于 1 为真”,“&&”运算符两边的关系表达式结果都是真值,这时,这行代码最终返回的结果是真值。
再如:
5>6&&2>1;这行代码表示“5 大于 6 为假并且 2 大于 1 为真”,“&&”运算符有一侧的表达式的结果是假值,此时,这行代码最终返回的结果是假值。
再如:
5>6&&2>3;这行代码表示“5 大于 6 为假并且 2 大于 3 为假”,“&&”运算符两侧表达式的结果都是假值,此时,这行代码最终返回的结果是假值。
综上所述,我们可总结“&&”(逻辑与)表达式最终返回的结果值,如下表所示:
A | B | A&&B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
从表中可总结出:对于&&(逻辑与)表达式来说,两个操作数中有一个操作数是 0,结果就是 0。
当然,“&&”运算符两侧也可以是变量,例如:
a>b&&n>m;也可以变量和数字一起使用,例如:
a>5&&n>8;以上带有操作数和“&&”运算符的式子都称为“&&”表达式,“&&”表达式最终返回的值是真值或假值,通常会用在选择控制语句和循环语句中。
C语言||运算符
||
运算符在 C语言中表示逻辑或运算符,它通常与关系表达式一起用,“||”表达式返回的结果也是真值(1)或者假值(0)。“||”也是双目运算符,在“||”左右两侧都有关系表达式,当两个关系表达式有一个成立时,“||”表达式的返回值是真值(1);当两个关系表达式都不成立时,“||”表达式的返回值是假值(0)。
例如:
3>2||2>1;这行代码表示“3 大于 2 为真或者 2 大于 1 为真”,“||”运算符两侧表达式的结果都是真值,此时,这行代码最终返回的结果是真值。
再如:
3>2||5>6;这行代码表示“3 大于 2 为真或者 5 大于 6 为假”,“||”运算符有一侧的关系表达式的结果是真值,这时,这行代码最终返回的结果是真值。
再如:
5>6||2>3;这行代码表示“5 大于 6 为假或者 2 大于 3 为假”,“||”运算符两侧表达式的结果都是假值,此时,这行代码最终返回的结果是假值。
综上所述,我们可总结“||”(逻辑或)表达式最终返回的结果值,如下表所示:
A | B | A||B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
从表中可总结出:对于“||”(逻辑或)表达式来说,两个操作数中有一个操作数是 1,结果就是 1。
当然,“||”运算符两侧也可以是变量,例如:
a>b||n>m;也可以变量和数字一起使用,例如:
a>5||n>8;以上带有操作数和“||”运算符的式子都称为“||”表达式,“||”表达式最终返回的值是真值或假值,通常会用在选择控制语句和循环语句中。
C语言!运算符
!
运算符在 C语言中表示逻辑非运算符,“!”表达式返回的结果也是真值(1)或者假值(0)。“!”是单目运算符,只有一个操作数。例如:
!88;这行代码表示 88 的逻辑非运算,88 是非0值,所以 88 是真值。因此这行代码最终返回的结果是假值。
再如:
!0;这行代码表示 0 的逻辑非运算,数字 0 就是 0 值,是假值,因此这行代码最终返回的结果是真值。
综上所述,我们可总结“!”(逻辑非)表达式最终返回的结果值,如下表所示。
A | !A |
---|---|
0 | 1 |
1 | 0 |
!a;也可以是各种表达式,例如:
!(a+b*c);带变量的表达式,需要先通过计算确定它的真假性,再进行逻辑非运算。
以上带有操作数和“!”运算符的式子都称为“!”表达式,“!”表达式最终返回的值是真值或假值,通常会用在选择控制语句和循环语句中。
逻辑运算符的优先级与结合性
“&&”和“||”是双目运算符,它们要求有两个操作数,结合方向自左至右;“!”是单目运算符,要求有一个操作数,结合方向自左向右。逻辑运算符的优先级从高到低依次为单目逻辑非运算符“!”、逻辑与运算符“&&”和逻辑或运算符“||”。逻辑运算符的优先级与结合性如下表所示。
优先级 | 符号 | 含义 | 结合性 |
---|---|---|---|
1 | ! | 逻辑非运算符(单目运算符) | 自左向右 |
2 | && | 逻辑与运算符 | 自左向右 |
3 | || | 逻辑或运算符 | 自左向右 |