如何预测这种一元表达式的输出?

时间:2017-09-02 04:33:15

标签: c++ unary-operator

#include<iostream>
using namespace std;
int main(){
    int x=4;
    cout<<x++<<x<<++x;
}

在下面的代码中,如果我们假设表达式是从右到左计算的那么输出应该是555,并且从左到右的评估输出应该是456.但是在运行程序之后输出结果是566。这是怎么回事?如何在C或C ++中实际评估表达式?

1 个答案:

答案 0 :(得分:1)

未指定C ++中的运算符参数(和函数参数)的评估顺序。它可以从左到右,从右到左,或没有任何顺序......

因为您在未排序的表达式中有多个访问权限并且在多个点上修改了x,所以您会遇到未定义的行为。

有关详细信息,请参阅this