这个问题已经在这里有了答案:
已关闭8年。
我有以下代码-
int a= 7;
const int &b = a;
int &c = a;
如果我用
cout << endl << ++c << '\t' << a << '\t' << b << '\t' << c;
它打印
"8 7 7 8"
但是如果我使用
cout << endl << a << '\t' << b << '\t' << ++c << '\t' << a << '\t' << b << '\t' << c;
它打印
"8 8 8 8 8 8"
这到底是怎么发生的?与优化有关吗?如果是,我如何在ideone.com中将其关闭?
最佳答案
实际上,operator <
有趣的是我的编译器打印
8 8 8 7 7
一些编译器提供了用于评估函数参数顺序的开关,但是如果您确实需要使用它,我会问自己这个原因,因为代码有更多错误,而是以可移植的方式编写。