编译器是怎么处理num=num++*2呢
首先我们先来预测一下这个结果,大概很多同志都会思考一下,然后觉得是201吧
其实我一开始也是这么觉得的,但是大多数往往是错的,【捂脸】。
首先我是使用的CB,默认的GCC编译器,gdb32调试。
直接让我们来看看调试结果!
换个方式看看吧
由此可见,++运算符创建了一个新的运行变量[新的内存地址],但是乘法并没有,导致了esp被写入了两次。所以我们就得出了这个结果,那就是200.
但是真的就这么简单吗?
这个问题在我的机器里面,并没有体现+1,为什么呢?虽然这个无论加或不加都不能影响什么,但是在别人的机器里面确实能体现这个+1的,因为在他的反汇编中,有赋值加1的语句,但我的没有。如果您有更好的看法,请留下一条建议,希望能一起学习,共同进步!!!