可能性の重複:
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とMyクラスのIntの値が異なっていますが、実際のIntが動作する方法を表すはずです。
標準のintと同じように、私のクラスを同じように動作させることはできますか?このコードは未定義の動作ですか?
なぜそれは不確定ですか? C++には操作の優先度がありますので、最初の引数としてはa
の新しい値が渡され、2番目の値には古い値が渡されるため、aの値が変更されるので、c++
が最初に評価される必要があります。そして、クラスIntの場合はこのように動作しますが、standart intの場合はそうではありません。
はい、未定義の動作です。他の人に標準への参照などで回答を作成させてください。 –
参照http://stackoverflow.com/questions/367633/what-are-all-the-common-undefined-behaviour-that-ac-programmer -should-know-ab – Dervall
はい、 'C'または' C++ 'を最初に評価するかどうかは不定であるため、UBです。 –