关于num++*2的问题

编译器是怎么处理num=num++*2呢

首先我们先来预测一下这个结果,大概很多同志都会思考一下,然后觉得是201
其实我一开始也是这么觉得的,但是大多数往往是错的,【捂脸】。
首先我是使用的CB,默认的GCC编译器,gdb32调试。

直接让我们来看看调试结果!
运行代码
换个方式看看吧
汇编运行路线
由此可见,++运算符创建了一个新的运行变量[新的内存地址],但是乘法并没有,导致了esp被写入了两次。所以我们就得出了这个结果,那就是200.

但是真的就这么简单吗?

这个问题在我的机器里面,并没有体现+1,为什么呢?虽然这个无论加或不加都不能影响什么,但是在别人的机器里面确实能体现这个+1的,因为在他的反汇编中,有赋值加1的语句,但我的没有。如果您有更好的看法,请留下一条建议,希望能一起学习,共同进步!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值