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

kov*_*rex 0 c++ expression operators

我总是希望它的工作原理如下所示:"x = x ++"后的x是什么?

但是当我试图测试它时:

int x = 0;
x = x++;
printf("x = %d\n", x);
Run Code Online (Sandbox Code Playgroud)

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

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

int x = 0;
int y = x++;
printf("y = %d\n", y);
Run Code Online (Sandbox Code Playgroud)

Xar*_*arn 11

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

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

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


归档时间:

查看次数:

197 次

最近记录:

11 年,11 月 前