简单代码中的c ++语法歧义

时间:2013-02-14 20:21:46

标签: c++ syntax

我使用vs2010编译器,我面临歧义

下面的代码是什么意思?什么是输出?为什么?

    int a;
    cout<<(a=2)+(a=3)+(a=5)
如果之前询问过这个问题或者问题是否明显,我很抱歉!但我很满意结果

   output :15

我在这里找不到我的答案:

Why are these constructs (using ++) undefined behavior?

请耐心等待,再看看结果(请)

提前

thanx

2 个答案:

答案 0 :(得分:3)

  

下面的代码是什么意思?

没什么明智的。

  

输出是什么?

不可预知的。

  

为什么?

因为此代码调用未定义的行为。

答案 1 :(得分:1)

该标准表示未定义表达式中并行子表达式的评估顺序。在您的示例中,编译器可以自由选择首先评估哪一个,因此结果是不可预测的