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
廣告