以下代码的输出为“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;
}
答案 0 :(得分:4)
您的代码调用未指定的行为,因为评估的顺序
operator<<
的参数未指定
调用operator<<
修改相同的变量。不要写这样的代码。
注意:请注意,代码不会导致未定义的行为,因为在修改i
和读取它之间存在序列点(至少一个函数调用)。