共用方式為


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,求值就會停止。

另請參閱