C ++中的流提取操作符

时间:2014-03-25 15:34:59

标签: c++

我有以下代码:

#include<iostream>
using namespace std;
 int main() 
{
 int x=3;
 cout<<x++<<++x<<x++<<++x<<endl;
return 0; 
}

输出应为3557 但它是6747.为什么???

此外:

#include<iostream>
using namespace std;
 int main() 
{
 int x=3;
    cout <<x++<<endl;
    cout<<++x<< endl;
    cout<<x++<< endl;
    cout<<++x<< endl;
return 0; 
}

以上代码给出: 3 五 五 7 (新行中的每个数字) 任何人都可以解释原因吗?

1 个答案:

答案 0 :(得分:0)

 int x=3;
 cout<<x++<<++x<<x++<<++x<<endl;

这是未定义的行为,因此您可以轻松获得任何结果。

int x=3;
cout <<x++<<endl; // x = 3, post incremented to 4...
cout<<++x<< endl; // here x = 4 and preincremented to x = 5
cout<<x++<< endl; // x = 5 , postincremented to 6...
cout<<++x<< endl; // so here x = 6 but preincremented to 7

Undefined behavior and sequence points

unexpected output in cout and printf