共用方式為


C 邏輯運算子

邏輯運算子執行邏輯層,並 (& &) 和邏輯 OR ( || ) 作業。

語法

  • 邏輯式 AND 運算式
    包容式 OR 運算式

    邏輯式 AND 運算式**& &** 包容式 OR 運算式

  • 邏輯 OR 運算式
    邏輯式 AND 運算式

    邏輯 OR 運算式**|**邏輯式 AND 運算式

邏輯運算子不會執行一般的算數轉換。 相反地,它們會評估為 0,其等價的角度來看,每一個運算元。 邏輯運算的結果是 0 或 1。 結果的型別是int。

以下是 c 的邏輯運算子:

運算子

描述

&&

邏輯層和運算子會產生值為 1,如果兩個運算元都有非零的值。 如果運算元都是等於 0,則結果為 0。 如果第一個運算元的邏輯層,和作業是等於 0,則不評估第二個運算元。

||

邏輯 OR 運算子會執行其運算元 (含) OR 運算。 如果兩個運算元都有 0 的值,則結果為 0。 如果任一運算元具有非零的值時,結果會是 1。 如果第一個運算元的邏輯 OR 運算的非零的值,則不會評估第二個運算元。

運算元的邏輯層,和邏輯 OR 運算式會從左到右評估。 如果第一個運算元的值足以決定運算的結果,則不會評估第二個運算元。 這就稱為 「 最少運算評估 」。 之後的第一個運算元是序列點。 請參閱序列點如需詳細資訊。

範例

下列範例說明邏輯運算子:

int w, x, y, z;

if ( x < y && y < z )
    printf( "x is less than z\n" );

在這個範例中, printf函式被呼叫來列印一則訊息,如果x是小於y和y是小於z。 如果x大於y,第二個運算元 (y < z) 不會評估並無法列印。 請注意這可能會造成問題的情況下,其中第二個運算元都有副作用是因其他原因而慣於。

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

在這個範例中,如果x等於是w, y,或z,第二個引數, printf函式會評估為 true,數值 1 會列印。 否則,它會評估為 false,數值 0 會列印。 只要其中一個條件為真時,評估就會消失。

請參閱

參考

邏輯 AND 運算子: & &

邏輯運算子或者: | |