上图左侧是源码,右侧是对应的汇编代码,使用 g++ -S a.cpp 翻译得来。代码运行的结果是:
从右侧汇编代码可以看出,printf中表达式的计算是从右往左的,且:
- 对于++b的输出,不管它放在printf的哪个位置,调用时使用的都是b的最终值,即4轮自增操作以后的值
- 而b++则在每一步计算时先把b保存到新寄存器,再把b+1后的结果赋给b
上图左侧是源码,右侧是对应的汇编代码,使用 g++ -S a.cpp 翻译得来。代码运行的结果是:
从右侧汇编代码可以看出,printf中表达式的计算是从右往左的,且:
- 对于++b的输出,不管它放在printf的哪个位置,调用时使用的都是b的最终值,即4轮自增操作以后的值
- 而b++则在每一步计算时先把b保存到新寄存器,再把b+1后的结果赋给b