printf("%d,%d",--a+b,--b+a);是被编译器理解为这个样子了:int t1 = --b+a;int t0 = --a+b;printf("%d,%d",t0,t1);C语言参数入栈顺序是从右至左,也就是先入栈--a+b,为31,a已经递减为10;再入栈--b+a,为30。优秀的程序员不会去写这种代码。