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

C++ c++;简单代码中的语法歧义,c++,syntax,C++,Syntax,我使用vs2010编译器,我面临一个不明确的问题 下面的代码是什么意思?输出是什么?为什么 int a; cout<<(a=2)+(a=3)+(a=5) 我在这里找不到我的答案: 耐心一点,再看看结果(请) 先发制人 下面的代码是什么意思 没什么明智的 输出是什么 不可预测 为什么 因为此代码调用未定义的行为。该标准表示表达式中并行子表达式的求值顺序未定义。在您的示例中,编译器可以自由选择首先计算哪一个,因此结果是不可预测的您就是使用编译器的人。你告诉我们,围绕这

我使用vs2010编译器,我面临一个不明确的问题

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

    int a;
    cout<<(a=2)+(a=3)+(a=5)
我在这里找不到我的答案:

耐心一点,再看看结果(请)

先发制人

下面的代码是什么意思

没什么明智的

输出是什么

不可预测

为什么


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

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

您就是使用编译器的人。你告诉我们,围绕这个问题的背景可以让它变得有意义。事实上,H2CO3的答案是正确的:)这又是一个评估顺序。。这个已经出现了多少次了。@thang它会出现多少次。。。恐怕,正如其他人所说,这是没有定义的。可能发生的情况(在您的情况下,不要指望它不会改变)是:
a=2;a=3;a=5;你能解释一下15结果的出现顺序吗?@mefmef代码调用未定义的行为。这意味着任何事情都可能发生(它可以打开你的媒体播放器,如果它真的想播放的话)。可能是编译器发出的指令没有准确地翻译成代码。因为代码是无效的,所以这样做完全合法。@mefmef-没有命令。您尝试在同一表达式中多次更改
a
的值。这是不允许的,并且会导致未定义的行为。任何结果都是可能的,包括系统崩溃(或输出15或其他)。
   output :15