为什么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。所以会不同,这是不同编译器的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值