a++和++a的压栈
来源:互联网 发布:天音淘宝工具箱 编辑:程序博客网 时间:2024/04/27 17:12
很简短的代码,输出是什么呢?
b = 6 c = 7 d = 4 e = 7 f = 2 g = 7
对结果如是理解:压栈从右往左,GFEDCB的顺序,压栈前要对a进行计算,由于FDB是a++所以2、4、6,而剩下是++a,所以要等a自增计算完,所以都是7。
有一个问题是:编译器怎么做到的呢?
Go to Dessembly说出了迷底。对于a++的结果,是有ebp寻址函数栈空间来记录中间结果的,在最后给printf压栈的时候,再从栈中把中间结果取出来;而对于++a的结果,则直接压寄存器变量,寄存器经过了所有的自增操作。
这就是a++和++a的压栈的区别。
- a++和++a的压栈
- cout和printf的压栈与a++和++a
- (++a)+=(a++)和(++a)=(++a)+(a++)的区别
- (++a)+=(a++)和(++a)=(++a)+(a++)的区别
- 求Sn=a+a*a+a*a*a+a*a*a*a的和,其中a是一个数字。
- 数组a[],a和&a的区别
- a++和++a的问题
- a 和&a的区别
- a和&a的区别
- a 和&a 的区别
- a++和++a的区别
- a和&a的区别
- a和&a的区别
- a和&a的区别
- ++a和a++的区别
- ++a和a++的差别
- a和&a的区别
- a++和++a的区别
- FMOD音频引擎简单使用
- 美国最极端的经典教育
- 理解大端序小端序
- SQLServer2000的JDBC驱动
- 学习
- a++和++a的压栈
- js刷新当前页的方法
- 破解利器Olldbg脚本教学(一)-认识ODbgScript
- ODbgScript的脚本命令[转载]
- (FLEX生成饼图)关于FLEX中的XML转换为ArrayCollection的应用.
- windows与linux我们该何去何从
- 海蜘蛛的一些试用感受
- 如何实现已有系统的多语言转换??
- 几个字