#include <stdio.h>
main()
{
int i=2;
printf("%d,%d,%d",i*=2,++i,i++);
}
运行结果
#include <stdio.h>
main()
{
int i=2;
printf("%d,%d,%d",i*=2,++i,i++);
}
运行结果
可以确定的是,调用函数时,参数是从右向左压入栈中的,其中的运算,也是从右端开始的。这大概能解释这里大家得到的结果虽然不同,但都是左端的数稍大。
至于为什么大家能得到不同的答案,就与具体编译器在压栈时如何去处理 先++ 和后++ 以及该运算对应位置是否存储改运算结果有关了。