C 和 C++ 中未定義、未指定和實現定義的行為之間的區別?


未定義的行為只是未由 C++ 規範定義的行為。例如,如果您在 i++ + ++i 這樣的表示式中有多個一元增量/減量運算,它們會導致未定義的行為。這僅僅是因為一些語言結構在語法上有效,但當代碼執行時你無法預測其行為。另一個示例是表示式:u = (u++);

由實現定義的行為是未由規範指定的並且由實現者決定並記錄做出選擇的方式的行為。在這種情況下,必須保證所做的選擇,即,只會發生這種情況。

對於未指定的行為,C++ 標準提供了多種可能的路徑,不要求實現文件化或保證任何內容。

更新於:2019-07-30

335 次瀏覽

啟動您的 職業生涯

完成課程,獲得認證

開始
廣告
© . All rights reserved.