可能性の重複:
Unexpected order of evaluation (compiler bug?)coutの<<演算子は、演算子の優先順位に関してどのように動作しますか?
私はこのプログラムの出力を予測することができませんでした:VS2008でコンパイルすると
#include<iostream>
using namespace std;
int *p(int *a)
{
(*a)++;
return a;
}
int main()
{
int i=0;
cout<<i++<<" "<<(*p(&i))++<<" "<<i++<<" "<<i<<endl;
return 0;
}
、それは3 2 0 4
を出力します。誰もなぜそれが0 2 3 4
ではないか説明できますか?
注:p
への関数呼び出しがないとうまくいきます。
ありがとうございます!
はい、動作は定義されていません。あなた自身に尋ねるべき質問は、あなたがそのようなコードを書いておきたい理由です。答えはあなたがしないということです。 –