在 C 和 C++ 中,未定義、未指定和實現定義的行為有什麼區別?


未定義行為就是 C++ 規範沒有定義的行為。例如,如果你在一條表示式中有多個單操作增量/減量運算,例如 i++ + ++i,它們導致的行為是未定義的。這僅僅是因為有些語言結構在語法上有效,但你無法預測程式碼執行時會發生什麼行為。另一個例子是表示式:u = (u++);

實現定義行為是由規範未指定的且由實現者決定和記錄其選擇方式的行為。在這種情況下,所做出的選擇必須是確定性的,也就是說,只應發生該選擇。

對於未指定的,C++ 標準提供了多條可能的路徑,不需要實現者記錄或保證任何內容。

更新於: 30-Jul-2019

335 次瀏覽

職業生涯邁出第一步

完成課程獲得認證

開始學習
廣告
© . All rights reserved.