0

我正在尝试运行这个简单的代码

int a=0;
cout<<a<<a++;

但输出不是我所期望的

10

我期望“00”和a = 1,为什么答案不同?

4

3 回答 3

3

你期望什么?或者更准确地说,您对任何事情的期望都是错误的:您正在修改一个变量,并且出于确定要写入的值以外的原因访问它,没有干预序列点,因此代码具有未定义的行为。它可能输出“10”,它可能输出“01”,或者它可能输出“42”,甚至崩溃。

于 2013-07-21T16:39:34.313 回答
2

C++ 标准没有指定子表达式的执行顺序

除非另有说明,单个运算符的操作数和单个表达式的子表达式的求值顺序以及副作用发生的顺序是未指定的...

于 2013-07-21T16:36:45.660 回答
0

这很简单...根据我在 C++ 中的知识,任何语句的执行顺序都从右开始...在 cout<

于 2014-12-31T05:35:12.263 回答