首页 > 编程笔记 > C语言笔记 阅读:210

C语言中的逻辑运算符(&&、||和!)

C语言中的逻辑运算符有 3 个,分别是 &&、|| 和 !,如下表所示:

符号 含义 说明
&& 逻辑与 对应数学中的“且”
|| 逻辑或 对应数学中的“或”
! 单目逻辑非 对应数学中的“非”

接下来将逐个讲解它们的用法,文章最后还会给出它们的优先级。

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 || 逻辑或运算符 自左向右

相关文章