4
如果i
是int
,像++i + ++i
這樣的表達式是未定義的行爲,因爲有2個未經過序列化的i
修改。但是,如果i
是一些類似int
的類,則++i + ++i
改爲具有不確定的排序修改,因此是定義的行爲(在此情況下具有確定性結果)。有沒有這樣的情況:對基元進行操作是不是有序的,而不是不確定的序列呢?如果是這樣,爲什麼這種情況不適用於用戶創建的類型?如果不是的話,爲什麼原始操作根本就沒有被確定?爲什麼原始類型的操作不是被序列化的,而是被不確定地排序的?
未定義的行爲可能允許編譯器應用特定類別的優化。一般來說,這些優化不太可能適用於UDT,因爲++ i然後只是函數調用的語法糖。 –