【发布时间】:2014-01-01 22:25:38
【问题描述】:
为什么我们得到两个 follow 语句的不同结果:
int x = 5;
x = x * x++;
输出为 26;而下一个示例返回 30,尽管它们是相同的?!
int x = 5;
x *= x++;
谢谢
【问题讨论】:
-
这不是未定义的吗? (两个)
-
两者都是未定义的行为。变量的存储值在序列点之间不得修改超过一次。
-
未定义的行为 意味着,无论你期望什么,你都错了。 未定义的行为意味着,您没有任何正当理由期望任何特定结果。
-
@kuroi 不,这种行为确实是未定义的。 Implementation-defined是另外一个类,比如
NULL宏是怎么定义的就是implementation-defined。 -
@llnspectable :你是对的。我太快回答这个问题了。我的错。
标签: c++ operators variable-assignment increment multiplication