C语言逻辑运算符



C语言中的逻辑运算符的结果是真或假。逻辑运算符通常与布尔操作数一起使用。

逻辑与运算符(&&)和逻辑或运算符(||)都是二元的(需要两个操作数)。逻辑非运算符(!)是一元运算符。

由于C语言将“0”视为假,将任何非零数字视为真,因此逻辑运算符的任何操作数都将转换为布尔数据。

下表显示了C语言中的逻辑运算符:

运算符 描述 示例
&& 称为逻辑与运算符。如果两个操作数均非零,则条件为真。 (A && B)
|| 称为逻辑或运算符。如果两个操作数中的任何一个非零,则条件为真。 (A || B)
! 称为逻辑非运算符。它用于反转其操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将使其为假。 !(A)

逻辑运算符的结果遵循布尔代数的原理。逻辑运算符遵循以下真值表。

逻辑与(&&)运算符

C语言中的&&运算符充当逻辑与运算符。它具有以下真值表:

a b a&&b

上述真值表显示,只有当两个操作数都为真时,&& 的结果才为真。

逻辑或(||)运算符

C语言使用双竖线符号 (||) 作为逻辑或运算符。它具有以下真值表:

a b a||b

上述真值表显示,当任何一个操作数为真时,|| 运算符的结果为真,当两个操作数都为假时,结果为假。

逻辑非(!)运算符

逻辑非! 运算符否定布尔操作数的值。真变为假,假变为真。以下是它的真值表:

A !a

与其他两个逻辑运算符&&||不同,逻辑非运算符! 是一元运算符。

示例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

示例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语言中的决策控制和循环语句。

示例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 循环中使用了非运算符:

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

c_operators.htm
广告