共用方式為


C 邏輯運算子

邏輯運算子會執行邏輯 AND (&&) 與邏輯 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 邏輯運算子描述如下:

運算子 描述
&& 若兩個運算元都有非零值,則邏輯 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" );

在此範例中,若 x 小於 yy 小於 z,則會呼叫 printf 函式以列印訊息。 如果 x 大於 y ,則不會評估第二個運算元 () y < z ,而且不會列印任何專案。 這是撰寫邏輯比較時必須考慮的另一種短期評估案例。 否則,如果程式碼依賴評估第二個運算元的副作用,可能會導致問題。

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

在此範例中,如果 x 等於 wyz,則 printf 函式的第二個引數判斷值為 true,並且列印值 1。 否則,它的判斷值為 false,並且印出值 0。 只要其中一項條件的判斷值為 true,求值就會停止。

另請參閱