为什么z=z++,z的结果没变?

int z = 2;
z = z++;
cout<<z;//输出仍为2

在codeblocks、dev c++中输出是2
在VC中输出是3

这是为什么?

答案:不同编译器对后缀++运算符的实现不一样。

简洁地回答一下:
若a=2;
a++ 是创建一个副本a’=2,a加1,返回副本a’。
++a 是a加1,返回a。

所以在 z=z++时,++运算符的优先级比=高,先执行++运算符要做的事。
先创建z’=2,z加1为3,准备返回副本z’。后缀++已经执行完了,这时只执行=,使值为3的z被赋值z’,最终z=2!

不同编译器对于++的实现是不同的,使它要做的事也不同。VC中,是没有创建副本z’,先执行赋值语句,再自增1。所以会不同,这是不同编译器的原因。

猜你喜欢

转载自blog.csdn.net/qq_38786209/article/details/78803189
z