C ++参考拼图:我的输出显示为反转。为什么?

时间:2010-09-29 04:43:44

标签: c++ operator-precedence

以下代码的输出为“321”,不带引号。为什么不“123”?

#include <iostream>
using namespace std;

int& inc(int& start)
{
 return ++start;
}

int main()
{
 int i = 0; 
 cout << inc(i) << inc(i) << inc(i) << endl;
}

1 个答案:

答案 0 :(得分:4)

您的代码调用未指定的行为,因为评估的顺序 operator<<的参数未指定

调用operator<<修改相同的变量。不要写这样的代码。

注意:请注意,代码不会导致未定义的行为,因为在修改i和读取它之间存在序列点(至少一个函数调用)。