这个涉及到函数的调用约定运行结果跟编译器有一定的关系,不同的编译器参数的入栈的顺序不同一般的编译器是从右到左如fun(a,b)这个函数调用,是先计算参数b,入栈,再计算参数a,入栈printf("%d %d", a++,++a);//先计算++a,先自增,a的值变为2,将2入栈 再来计算a++,将a的值2入栈,再使a自增,a的值变为3printf(" %d\n",a); //a的值已经变为3了printf(%d %d", ++a.a++);//先计算a++,将a的值1入栈,再使a自增,a的值变为2,再来计算++a,先自增,a的值为3,将3入栈,输出3 1printf(" %d\n",a); //输出3
|