12.32 人們好像有些在意實現定義 (implementation-defin-ed)、未明確  (unspecified) 和無定義 (undefined) 行為的區別。它們的區別到底在哪裡?

簡單地說: 實現定義意味著實現必須選擇某種行為並提供文檔。 未明確意味著實現必須選擇某種行為但不必提供文檔。 未定義意味著任何事情都可能發生。標準在任何情況下都不強加需求; 前兩種情況下, 它有時建議一組可能的行為 (也可能要求從中選擇一種)。

注意既然標準對無定義行為沒有強制要求, 編譯器就絕對可以做 任何事情。特別地, 對程序其它部分的正常運行沒有任何保證; 參見問題 3.2, 有一個相對簡單的例子。

如果你對書寫可移植代碼有興趣, 你可以忽略它們的區別, 因為通常你都 希望避免依賴三種行為中的任何一種。

參見問題 3.8 和 11.34

第四種不那麼嚴格定義的行為是 ``場景特定" (locale-specific)。

參考資料: [ISO, Sec. 3.10, Sec. 3.16, Sec. 3.17]; [Rationale, Sec. 1.6]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)