#include<iostream>
using namespace std;
int main(){
int x=4;
cout<<x++<<x<<++x;
}
在下面的代码中,如果我们假设表达式是从右到左计算的那么输出应该是555,并且从左到右的评估输出应该是456.但是在运行程序之后输出结果是566。这是怎么回事?如何在C或C ++中实际评估表达式?
答案 0 :(得分:1)
未指定C ++中的运算符参数(和函数参数)的评估顺序。它可以从左到右,从右到左,或没有任何顺序......
因为您在未排序的表达式中有多个访问权限并且在多个点上修改了x,所以您会遇到未定义的行为。
有关详细信息,请参阅this。