可能重複:
How do we explain the result of the expression (++x)+(++x)+(++x)?
Undefined Behavior and Sequence PointsC + C++ =未定義的行爲?
我有問題,在不同方式的代碼
U = C + C++;
會運行非標準類型和我自己的類型。 我舉一個例子http://ideone.com/4S1uA其中我有不同的int值和我的類Int值,它應該代表真正的Int工作方式。
是否有可能使我的類的行爲方式與標準int的工作方式相同?此代碼是否有未定義的行爲?
爲什麼它是非玩家的行爲? C++有一個操作優先級,所以c++
應該先評估,因爲它會改變a的值,所以爲了增加第一個參數應該傳遞新值a
並作爲第二個舊值。它對Int類是這樣工作的,但對於standart int不適用。
是的,這是未定義的行爲。我會讓其他人創建一個答案,引用標準等。 – 2012-02-10 20:45:01
請參閱http://stackoverflow.com/questions/367633/what-are-all-the-common-undefined-behaviour-that-ac-programmer -should-know-ab – Dervall 2012-02-10 20:46:22
是的,它是UB,因爲它是未定義的,否則將首先評估「C」或「C++」。 – 2012-02-10 20:46:56