Cprogramming 简明教程
Logical Operators in C
C 中的逻辑运算符求值为真或假。逻辑运算符通常与布尔操作数一起使用。
逻辑 AND 运算符 ( && ) 和逻辑 OR 运算符 ( || ) 都是二元的(需要两个操作数)。逻辑 NOT 运算符 ( ! ) 是单目运算符。
由于 C 将“0”视为假,将任何非零数字视为真,因此对逻辑操作数的任何操作数都转换为布尔数据。
下表显示了 C 中的逻辑运算符 −
Operator |
Description |
Example |
&& |
称为逻辑 AND 运算符。如果两个操作数都非零,则条件变为 true。 |
(A && B) |
称为逻辑或运算符。如果两个操作数的任何一个非零,则结果为真。 |
(A |
|
B) |
! |
称为逻辑非运算符。用于反转其操作数的逻辑状态。如果某个条件为真,则逻辑非运算符会将其变为假。 |
逻辑运算符的结果遵循布尔代数原理。逻辑运算符遵循以下真值表。
Logical AND (&&) Operator
C 中的 && 运算符充当逻辑 AND 运算符。它有以下真值表 −
a |
b |
a&&b |
true |
true |
True |
true |
false |
False |
false |
true |
False |
false |
false |
False |
上述真值表表明,仅当两个操作数都为真时,&& 的结果才为真。
Logical OR (||) Operator
C 使用双竖线符号 (||) 作为逻辑 OR 运算符。它有以下真值表 −
a |
b |
a |
b |
|
true |
true |
True |
true |
false |
True |
false |
true |
true |
false |
上述真值表表明,当其中一个操作数为真时, || 运算符的结果为真,当两个操作数都为假时为假。
Logical NOT (!) Operator
逻辑 NOT ! 运算符对布尔操作数的值求反。真变为假,假变为真。以下是它的真值表 −
A |
!a |
True |
False |
False |
True |
! 逻辑运算符是单目运算符,不同于其他两个逻辑运算符 && 和 || 。
Example 1
下面的示例显示了在 C 中使用逻辑运算符的方法 −
#include <stdio.h>
int main(){
int a = 5;
int b = 20;
if (a && b){
printf("Line 1 - Condition is true\n" );
}
if (a || b){
printf("Line 2 - Condition is true\n" );
}
/* lets change the value of a and b */
a = 0;
b = 10;
if (a && b){
printf("Line 3 - Condition is true\n" );
} else {
printf("Line 3 - Condition is not true\n" );
}
if (!(a && b)){
printf("Line 4 - Condition is true\n" );
}
return 0;
}
运行代码并检查其输出:
Line 1 - Condition is true
Line 2 - Condition is true
Line 3 - Condition is not true
Line 4 - Condition is true
Example 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\n" );
}
if (a || b){
printf("Line 2 - Condition is true\n" );
}
return 0;
}
运行代码并检查其输出:
Line 2 - Condition is true
逻辑运算符通常用于构建复合布尔表达式。除了关系运算符外,逻辑运算符也在 C 中的决策控制和循环语句中使用。
Example 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
Example 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
Example 5
以下 C 代码在 while 循环中使用 NOT 运算符 −
#include <stdio.h>
int main(){
int i = 0;
while (!(i > 5)){
printf("i = %d\n", i);
i++;
}
return 0;
}
在上述代码中, while 循环持续进行,直至表达式 "!(i > 5)" 变为假,而这发生在 "i" 的值变为大于 5。
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
C 有逻辑运算符的按位对应项,例如按位 AND (&)、按位 OR (|) 和二进制 NOT 或补码 (~) 运算符。