| 寫法 | 類型 | 行為 | 結果 |
|---|---|---|---|
if (k == 1) | 比較運算 | 判斷 k 是否等於 1 | 真/假 |
if (1 == k) | 比較運算 | 同上,習慣稱「尤達條件」,防止誤寫成賦值 | 真/假 |
if (k = 1) | 賦值運算 | 將 1 賦值給 k,整個運算式值為 1(非零),視為 true | 永真,且 k 被改為 1 |
因為 1 是常值(rvalue),無法作為賦值目標(lvalue)。編譯器會報錯:「left operand must be l-value」。
if (1 == k) 風格,若漏寫一個等號會直接編譯報錯,避免邏輯 Bug。-Wall -Wextra 或 MSVC /W4),可捕捉「assignment used as truth value」警告。k = 1; if (k) ...。C 語言中,標量類型(整數、指標、浮點)參與條件判斷時:
因此 k = 1 產生值 1,進入 if 區塊。