邏輯語義完全相同,編譯器生成的機器碼無差異。區別僅在於**編碼風格與防錯目的**。
if (NULL == p) // 常量在左
if (p == NULL) // 變量在左
早期 C 編譯器對 `if (p = NULL)`(誤寫賦值為判斷)僅給出警告而非報錯。寫成 `if (NULL = p)` 則會直接**編譯錯誤**(常量不可賦值),從而在編譯期捕獲拼寫錯誤。
**統一團隊風格即可**。若維護舊代碼庫已采用 Yoda 風格,保持一致;新項目推薦 `p == NULL` 並開啟高警告級別 + 靜態分析。