C語言中&和&&的區別
在大多數程式語言中,“&”和“&&”運算子都是邏輯與運算子,但在某些情況下它們的行為可能不同。&和&&都是用於評估條件語句的運算子。兩者之間最基本的區別在於,&運算子是邏輯運算子也是位運算子,而&&運算子僅是邏輯運算子。
閱讀本文以瞭解更多關於這兩個運算子的資訊以及它們彼此之間的區別。讓我們從&和&&運算子的基本概述開始。
什麼是“&”運算子?
&運算子既是邏輯運算子,也是位運算子。因此,&運算子既作用於布林資料也作用於二進位制資料(位)。當&運算子用作邏輯運算子時,它會產生TRUE或FALSE的結果。如果條件語句的兩側都為真,則它給出TRUE的結果;否則,它會產生FALSE的結果。
&運算子允許編譯器評估條件表示式的兩側。因此,即使表示式的左側結果為FALSE,它也會評估表示式的右側。
&運算子是一個按位與運算子,它作用於其運算元的各個位。它將第一個運算元的每個位與第二個運算元的相應位進行比較,如果兩個位都是1,則它將相應的結果位設定為1。否則,它將結果位設定為0。
什麼是“&&”運算子?
&&運算子純粹是一個邏輯運算子。因此,&&運算子僅作用於布林資料型別,即位。&&運算子也稱為短路運算子。這是因為它只檢查條件語句的左側。
&&運算子是一個邏輯與運算子,它作用於布林表示式。如果它的兩個運算元都為真,則返回真,否則返回假。如果條件語句的左側結果為FALSE,則它不會評估條件表示式的右側,因為結果已知為False。
&和&&的區別
下表突出顯示了&和&&運算子之間所有重要的區別:
序號 |
&運算子 |
&&運算子 |
---|---|---|
1. |
它是位運算子。 |
它是邏輯運算子。 |
2. |
它評估表示式的左右兩側。 |
它只評估表示式的左側。 |
3. |
它作用於“布林”資料型別(真或假)。 |
它只作用於“布林”資料型別。 |
4. |
它也作用於位。 |
它不作用於位。 |
5. |
它用於檢查邏輯條件。 |
它用於檢查邏輯條件。 |
6. |
示例: #include<stdio.h> int main(){ int x = 3; int y = 4; int z = x & y; printf ("z = %d", z); return 0; } |
示例: #include<stdio.h> int main(){ int a = 6, b = 3; printf("%d", a&&b); return 0; } |
結論
總而言之,兩者之間最顯著的區別在於,&運算子是位運算子和邏輯運算子,而&&運算子純粹是邏輯運算子。