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
小於 y
且 y
小於 z
,則會呼叫 printf
函式以列印訊息。 如果 x
大於 y
,則不會評估第二個運算元 () y < z
,而且不會列印任何專案。 這是撰寫邏輯比較時必須考慮的另一種短期評估案例。 否則,如果程式碼依賴評估第二個運算元的副作用,可能會導致問題。
printf( "%d" , (x == w || x == y || x == z) );
在此範例中,如果 x
等於 w
、y
或 z
,則 printf
函式的第二個引數判斷值為 true,並且列印值 1。 否則,它的判斷值為 false,並且印出值 0。 只要其中一項條件的判斷值為 true,求值就會停止。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應