我一直希望它的工作原理如下所述: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);
答案 0 :(得分:11)
请注意,您正在链接Java问题,但您正在使用C ++编写。
在C(并在C ++中继承)中,x = x++;
未定义,因为您在两个序列点之间修改x
两次。这意味着代码可以做任何事情,包括从您的银行账户中窃取资金和雇佣杀手来杀死您,编译器就在右边。
很高兴它只将x
设置为1.: - )