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 會列印。只要其中一個條件為真時,評估就會消失。