关于++的操作
1.求下面程序的输出结果:
上述程序在VC 6下反汇编后的结果如下:
通过反汇编可知,程序的结果是:5 + 5 + 6 = 16.
2.
通过反汇编可知,程序的结果是:5 + 5 + 5 = 15.
总结:
1.编译的最长匹配原则,以及++的优先级高于+。对变量的引用是通过地址进行的。
2.参数的压栈及运算符的压栈。例如:a = ++i + ++i + ++i,是通过将++压入符号栈,然后将i压入数据栈,弹栈,计算出该++i的值,将该值的引用地址压入数据栈;将+压入符号栈,将++压入符号栈,将i压入数据栈,因为后面的是+,而++的优先级高于+,所以数据栈弹栈,符号栈弹栈,计算出的结果压栈。再继续弹栈,压栈。。。。