C 语言中的逻辑运算符
C 语言中的逻辑运算符的计算结果为 True 或 False。逻辑运算符通常与布尔操作数一起使用。
逻辑与运算符 (&&) 和逻辑或运算符 (||) 本质上都是二进制的(需要两个操作数)。逻辑非运算符 (!) 是一个一元运算符。
由于 C 语言将"0"视为 False,将任何非零数字视为 True,因此任何逻辑操作数的操作数都会转换为布尔值。
下表列出了 C 语言中的逻辑运算符 -
| 运算符 | 描述 | 示例 |
|---|---|---|
| && | 称为逻辑与运算符。如果两个操作数都不为零,则条件成立。 | (A && B) |
| || | 称为逻辑或运算符。如果两个操作数中有一个非零,则条件成立。 | (A || B) |
| ! | 称为逻辑非运算符。它用于反转操作数的逻辑状态。如果条件为真,则逻辑非运算符会使其为假。 | !(A) |
逻辑运算符的结果遵循布尔代数的原理。逻辑运算符遵循以下真值表。
逻辑与 (&&) 运算符
C 语言中的 && 运算符充当逻辑与运算符。它具有以下真值表 -
| a | b | a&&b |
|---|---|---|
| true | true | True |
| true | false | False |
| false | true | False |
| false | false | False |
上述真值表表明,仅当两个操作数都为 True 时,&& 的结果才为 True。
逻辑或 (||) 运算符
C 语言使用双竖线符号 (||) 作为逻辑或运算符。其真值表如下:
| a | b | a||b |
|---|---|---|
| true | true | True |
| true | false | True |
| false | true | true |
| false | false | false |
上述真值表显示,当其中一个操作数为 True 时,|| 运算符的结果为 True;当两个操作数都为 false 时,结果为 False。
逻辑非 (!) 运算符
逻辑非 ! 运算符对布尔操作数的值取反。True 变为 False,False 变为 True。其真值表如下:-
| A | !a |
|---|---|
| True | False |
| False | True |
与其他两个逻辑运算符 && 和 || 不同,逻辑非运算符 ! 是一个一元运算符。
示例 1
以下示例展示了 C 语言中逻辑运算符的用法 -
#include <stdio.h>
int main(){
int a = 5;
int b = 20;
if (a && b){
printf("Line 1 - Condition is true
" );
}
if (a || b){
printf("Line 2 - Condition is true
" );
}
/* lets change the value of a and b */
a = 0;
b = 10;
if (a && b){
printf("Line 3 - Condition is true
" );
} else {
printf("Line 3 - Condition is not true
" );
}
if (!(a && b)){
printf("Line 4 - Condition is true
" );
}
return 0;
}
输出
运行代码并检查其输出 −
Line 1 - Condition is true Line 2 - Condition is true Line 3 - Condition is not true Line 4 - Condition is true
示例 2
在 C 语言中,char 类型是 int 类型的子集。因此,逻辑运算符也可以用于 char 类型。
#include <stdio.h>
int main(){
char a = 'a';
char b = '\0'; // Null character
if (a && b){
printf("Line 1 - Condition is true
" );
}
if (a || b){
printf("Line 2 - Condition is true
" );
}
return 0;
}
输出
运行代码并检查其输出 −
Line 2 - Condition is true
逻辑运算符通常用于构建复合布尔表达式。除了关系运算符之外,逻辑运算符也用于 C 语言中的决策控制语句和循环语句。
示例 3
以下示例展示了 C 程序中的复合布尔表达式 -
#include <stdio.h>
int main(){
int phy = 50;
int maths = 60;
if (phy < 50 || maths < 50){
printf("Result:Fail");
}
else {
printf("Result:Pass");
}
return 0;
}
输出
Result:Pass
示例 4
类似的逻辑也可以使用 && 运算符表达,如下所示 -
#include <stdio.h>
int main(){
int phy = 50;
int maths = 60;
if (phy >= 50 && maths >= 50){
printf("Result: Pass");
}
else {
printf("Result: Fail");
}
return 0;
}
输出
运行代码并检查其输出 −
Result: Pass
示例 5
以下 C 代码在 while 循环中使用 NOT 运算符 -
#include <stdio.h>
int main(){
int i = 0;
while (!(i > 5)){
printf("i = %d
", i);
i++;
}
return 0;
}
输出
在上面的代码中,while 循环持续迭代,直到表达式 "!(i > 5)" 变为 false,即当 "i" 的值大于 5 时。
i = 0 i = 1 i = 2 i = 3 i = 4 i = 5
C 语言具有逻辑运算符的按位对应项,例如按位与 (&)、按位或 (|) 以及二进制非或补码 (~) 运算符。

c_operators.html