【发布时间】:2013-07-21 16:27:00
【问题描述】:
我正在尝试运行这个简单的代码
int a=0;
cout<<a<<a++;
但输出不是我所期望的
10
我希望“00”和a=1,为什么答案不同?
【问题讨论】:
-
我已经回答了,但我敢打赌这是重复的。
-
Asked just few hours ago,基本相同。也可以点击那里发布的链接。
我正在尝试运行这个简单的代码
int a=0;
cout<<a<<a++;
但输出不是我所期望的
10
我希望“00”和a=1,为什么答案不同?
【问题讨论】:
你期望什么?或者更正确地说,你错了 期待任何东西:你正在修改一个变量,并访问它 出于确定要写入的值以外的原因,没有 干预序列点,因此代码具有未定义的行为。 它可能输出“10”,它可能输出“01”,或者它可能输出 “42”,甚至崩溃。
【讨论】:
C++ standard 没有指定子表达式的执行顺序
除非另有说明,个别操作数的求值顺序 单个表达式的运算符和子表达式,以及顺序 哪些副作用发生,未指定...
【讨论】:
这很简单...根据我在 C++ 中的知识,任何语句的执行顺序都是从右开始...在 cout
【讨论】: