C 邏輯運算子

邏輯運算符會執行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,則會呼叫 函printfy來列印訊息。x 如果 x 大於 y,則不會評估第二個作數 (y < z),而且不會列印任何專案。 這是撰寫邏輯比較時必須考慮的另一個短期評估案例。 否則,如果程式代碼依賴評估第二個作數的副作用,它可能會造成問題。

printf( "%d" , (x == w || x == y || x == z) );

在此範例中,如果 x 等於 wyz,則函 printf 式的第二個自變數會評估為 true,並列印值 1。 否則,它會評估為 false,並列印值 0。 一旦其中一個條件評估為 true,評估就會停止。

另請參閱