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 语言具有逻辑运算符的按位对应项,例如按位与 (&)、按位或 (|) 以及二进制非或补码 (~) 运算符。