当我使用 cout 打印我的变量值时,如果我在一行或两行中使用两个语句,它不会给我相同的答案。你能帮帮我吗?
int a= 5;
cout << a << endl;
cout << a-- << endl;
cout << a << a-- << endl;
// it gives me different answer, why?
//they are basically same thing
最佳答案
cout << a << a-- << endl;
翻译为:
cout.operator<<(a).operator<<(a--).operator<<(endl);
在这种情况下,语言不保证首先评估哪个参数。编译器可以自由选择对他们有意义的评估顺序。请注意,函数调用顺序是有保证的,但函数参数的评估顺序是有保证的。
如果您能够使用 c++17 ,标准已更改为 <<
运算符(operator)。它保证了有意义的评估顺序,您将获得预期的结果。
关于c++ - cout减去简单打印的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54811833/