如何预测这种一元表达式的输出?
How to predict output of such unary expressions?
#include<iostream>
using namespace std;
int main(){
int x=4;
cout<<x++<<x<<++x;
}
在下面的代码中,如果我们假设表达式是从右到左求值的,那么输出应该是 555,对于从左到右求值,输出应该是 456。但是在 运行 程序之后输出结果是566,这是怎么回事?在 C 或 C++ 中实际如何计算表达式?
C++ 中运算符参数(和函数参数)的求值顺序未指定。它可以从左到右,从右到左,或者没有任何顺序...
因为您在未排序的表达式中的多个位置访问和修改了 x,所以您遇到了未定义的行为。
有关详细信息,请参阅 this。
#include<iostream>
using namespace std;
int main(){
int x=4;
cout<<x++<<x<<++x;
}
在下面的代码中,如果我们假设表达式是从右到左求值的,那么输出应该是 555,对于从左到右求值,输出应该是 456。但是在 运行 程序之后输出结果是566,这是怎么回事?在 C 或 C++ 中实际如何计算表达式?
C++ 中运算符参数(和函数参数)的求值顺序未指定。它可以从左到右,从右到左,或者没有任何顺序...
因为您在未排序的表达式中的多个位置访问和修改了 x,所以您遇到了未定义的行为。
有关详细信息,请参阅 this。