printf("%d %d %d %d\n", b++, ++b, b++, ++b)打印的汇编解释

printf("%d %d %d %d\n", b++, ++b, b++, ++b)打印的汇编解释

 上图左侧是源码,右侧是对应的汇编代码,使用 g++ -S a.cpp 翻译得来。代码运行的结果是:

printf("%d %d %d %d\n", b++, ++b, b++, ++b)打印的汇编解释

 从右侧汇编代码可以看出,printf中表达式的计算是从右往左的,且:

  1.      对于++b的输出,不管它放在printf的哪个位置,调用时使用的都是b的最终值,即4轮自增操作以后的值
  2.      而b++则在每一步计算时先把b保存到新寄存器,再把b+1后的结果赋给b