C 規範定義了各種類型的程序行為,包括未定義、未指定、實現定義、錯誤,而且格式不正確。雖然有些差異相對清晰,但「格式不正確;無需診斷」一詞引起了對其確切含義的質疑。
格式不正確: A違反語法或可診斷語意規則的程序。
未定義的行為:標準對實現操作沒有做出任何假設或要求的程序行為。
錯誤: 標準使用的術語,表示程序格式不正確或參與未定義的行為.
格式良好:遵循語法和可診斷語義的程序
當實現以引入新語法或行為的方式擴展語言時,就會出現這種特定的措詞。根據標準,此類擴展被認為是格式錯誤的,但允許實現不發出診斷訊息。
這裡的關鍵區別是未定義的行為明確承認程序的錯誤性質,而“格式錯誤;無需診斷”是指實現允許違規但未提供明確錯誤的特定情況
從技術上講,格式不正確的程式不應該編譯。然而,在「格式錯誤;無需診斷」的情況下,技術上允許實作靜默編譯甚至執行程式而不發出警告。
標準的不一致使用圍繞錯誤的術語導致了混亂。術語「錯誤」意味著需要診斷的錯誤,但 1.3.13 中的「註釋」部分允許實作默默地忽略此類問題。
雖然可能存在細微差別在「格式不正確;不需要診斷」和「未定義的行為」之間,標準的不一致使得很難明確區分。最終,這兩個術語都指的是程序行為不可預測並可能導致意外結果的情況。
以上是C 的「未定義行為」和「格式錯誤;無需診斷」之間有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!