在x86上,C的函数调用的参数传递是“栈传递”,并且是“倒序”压栈,即最右边的参数最先压栈,所以,printf ("%d,%d\n", a+=2, a+=3) 这个函数调用的三个参数:
1、"%d,%d\n"
2、a+=2
3、a+=3
压栈的顺序是:
1、a+=3
2、a+=2
3、"%d,%d\n"
压栈就要对表达式求值,于是先计算 a+=3,得到4,然后计算 a+=2,得到6,于是结果就是 6,4。
printf("%d,%d\n",a+=2,a+=3)的时候先从后面的a+=3算起,然后再a+=2