2017-06-09 21 views
-2

私はこのコードを別のコンパイラで実行しています。マイクロソフトVS。それは1を出力しますが、gccでは0を出力します。標準のC++による結果は何ですか?このコードの標準化があれば、私はしません。C++の代入演算子または増分演算子

int a=0; 
a=a++; 
cout << a<< endl; 
+0

これはあなたの質問に答えます:https://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points –

+0

C++のタグwiki *明示的に*あなたにこれを聞かないように指示します。 –

答えて

2

a=a++undefined behaviorです。何が起こるかについての標準的な定義がないだけでなく、異なる実行間で常に同じことをすることさえ保証されていません。

今度は0を出力し、次回は1を出力し、3回目にプログラムをクラッシュさせる可能性があります。