邏輯運算符會執行logical-AND (&&) 和logical-OR(||) 作業。
語法
logical-AND-expression:
inclusive-OR-expression
logical-AND-expression
&&
inclusive-OR-expression
logical-OR-expression:
logical-AND-expression
logical-OR-expression
||
logical-AND-expression
備註
邏輯運算子不會執行一般算術轉換。 相反地,它們會根據與 0 的等價來評估每個作數。 邏輯作業的結果為 0 或 1。 結果類型為 int。
C 邏輯運算符如下所述:
| 操作員 | 說明 |
|---|---|
&& |
如果兩個作數都有非零值,則logical-AND運算符會產生值1。 如果任一個作數等於0,則結果為0。 如果邏輯 AND 作業的第一個作數等於 0,則不會評估第二個作數。 |
|| |
邏輯 OR 運算子會在其作數上執行內含 OR 運算。 如果兩個作數都有0個值,則結果為0。 如果任一作數具有非零值,則結果為 1。 如果邏輯 OR 作業的第一個作數具有非零值,則不會評估第二個作數。 |
邏輯 AND 和邏輯 OR 表達式的作數會從左至右進行評估。 如果第一個作數的值足以判斷作業的結果,則不會評估第二個作數。 這個效果稱為「短線路」評估。 表達式中第一個作數後面會有序列點。 如需詳細資訊,請參閱 時序點。
範例
下列範例說明邏輯運算子:
int w, x, y, z;
if ( x < y && y < z )
printf( "x is less than z\n" );
在此範例中,如果 小於 且 y 小於 z,則會呼叫 函printf式y來列印訊息。x 如果 x 大於 y,則不會評估第二個作數 (y < z),而且不會列印任何專案。 這是撰寫邏輯比較時必須考慮的另一個短期評估案例。 否則,如果程式代碼依賴評估第二個作數的副作用,它可能會造成問題。
printf( "%d" , (x == w || x == y || x == z) );
在此範例中,如果 x 等於 w、 y或 z,則函 printf 式的第二個自變數會評估為 true,並列印值 1。 否則,它會評估為 false,並列印值 0。 一旦其中一個條件評估為 true,評估就會停止。