在 C 語言中,邏輯運算子 ||(邏輯或)的優先級低於關係運算子 <(小於)。這意味著表達式 5 < number1 || number2 會被解析為 (5 < number1) || number2,而不是 5 < (number1 || number2)。
首先計算 5 < number1,結果為 0(假)或 1(真)。接著進行邏輯或運算:若左側為真,整個表達式短路為真(非零值);若左側為假,則評估右側 number2。在 C 語言中,任何非零值皆視為真,零為假。因此,若 number2 非零,整個表達式結果為真(通常為 1);若 number2 為零,則結果為假(0)。
為了消除歧義,建議顯式加上括號:
(5 < number1) || (number2 != 0)
這樣能明確表達「先比較大小,再進行邏輯或」的意圖,也符合良好的程式碼風格。
|| 優先級較高,導致邏輯判斷錯誤。掌握運算子優先級與結合性,是撰寫正確、可維護 C 程式的基礎。