-5

我使用 vs2010 编译器,但我遇到了歧义

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

    int a;
    cout<<(a=2)+(a=3)+(a=5)

如果这个问题之前被问过或者很明显,我很抱歉!但我对结果感到困惑

   output :15

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

为什么这些构造(使用 ++)是未定义的行为?

耐心再看一遍结果(请)

提前谢谢

4

2 回答 2

3

下面的代码是什么意思?

没有什么明智的。

输出是什么?

不可预料的。

为什么?

因为这段代码调用了未定义的行为。

于 2013-02-14T20:23:41.253 回答
1

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

于 2013-02-14T20:30:06.893 回答