Possible Duplicate:
What is the correct answer for cout << c++ << c;?
我有以下代码-
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<< 是一个函数调用,c++ 可以按照它喜欢的任何顺序计算传递给函数的参数,因此++c inc 首先由你的编译器完成,非常合法 - 我的编译器做了一些事情不同。
有趣的是我的编译器打印
8 8 8 7 7
一些编译器提供了函数参数求值顺序的开关,但如果你真的需要使用它,我会问自己这样做的原因,因为代码有更多错误,而是以可移植的方式编写它.
关于c++ - C++中的打印顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683893/