为什么x = x ++;没有像我期望的那样工作?

时间:2014-08-21 09:22:14

标签: c++ operators expression

我一直希望它的工作原理如下所述:What is x after "x = x++"?

但是当我试着测试它时:

int x = 0;
x = x++;
printf("x = %d\n", x);

结果不是我想象的那样但是1.我们在VS2012和g ++(版本4.7)中进行了测试。

请注意,此代码按预期打印0:

int x = 0;
int y = x++;
printf("y = %d\n", y);

1 个答案:

答案 0 :(得分:11)

请注意,您正在链接Java问题,但您正在使用C ++编写。

在C(并在C ++中继承)中,x = x++;未定义,因为您在两个序列点之间修改x两次。这意味着代码可以做任何事情,包括从您的银行账户中窃取资金和雇佣杀手来杀死您,编译器就在右边。

很高兴它只将x设置为1.: - )