未定義行為與「格式錯誤,無需診斷」之間的區別
C 標準將程序行為分為各種類別,包括- 格式正確、格式錯誤、未指定和未定義。 「未定義的行為」是指標準沒有提供有關實現回應的要求或假設的情況。相較之下,「格式錯誤」的程式違反了語法或語意規則,因此不被視為格式良好。
短語「格式錯誤;無需診斷」出現在標準中,似乎與以下定義相矛盾一個格式不正確的程序。根據標準,一致的實作必須接受並執行格式良好的程序,而除了擴展使用的情況外,對於格式錯誤的程序沒有任何要求。
這種不一致源自於以下事實:標準從 C 標準中汲取靈感,除非另有明確說明,否則 C 標準將所有錯誤視為未定義的行為。然而,C 標準的目標是預設要求對所有錯誤進行診斷。
最終,「無需診斷」的存在表示相關行為不被視為未定義。它與「未定義行為」的不同之處僅在於標準明確允許編譯器繼續編譯和執行而不發出錯誤或警告。這種區別主要用於描述運行時問題,而不是語法錯誤。
總之,雖然術語「格式錯誤;無需診斷」可能看起來令人困惑,但它本質上與未定義的行為含義相同。它表示程式格式不正確但允許編譯器繼續而不提供診斷的情況。主要區別在於,「格式錯誤;無需診斷」通常指運行時問題,而「未定義行為」則涵蓋語法錯誤和運行時問題。
以上是未定義的行為與「格式不正確,無需診斷」:有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!