公式のC++標準によると、異なるコンパイラで実行した場合に次の単純なコードの出力に違いがある理由を誰かが説明できますか?
言い換えれば、標準では、最初に何が起こるか、a ++またはb割り当てに関して、これを開いたままにしますか?
これは関数パラメーターとは関係ありません。異なるコンパイラーで実行される同じコードです。サンプルコードは次のとおりです。
#include <iostream>
using namespace std;
int main() {
int a = 10, b;
a = b = a+++a;
cout << "a = " << a << ", b = " << b;
return 0;
}
コードのリンクはこちらです。
g++4.7.2およびIntelC++ 13.0.1を使用すると、次のようになります。
stdout:
a = 21, b = 20
g++4.8.0およびClang++3.2では、次のようになります。
stdout:
a = 21, b = 21
どちらが正しいですか?ありがとう。