我个人的理解是,首先你要理解++i和i++的区别,++i的处理方式是先自增然后后返回i本身,而i++的处理方式是先用一个临时变量保存i,之后将i自增,最后返回临时变量,注意不是返回i本身,这就意味着++i是一个左值,而i++是一个右值!此外函数的形参编译是从右向左编译的。现在你可以理解为什么v2是0了,函数先编译v2,因为v2是i未自增前的一个副本,所以v2=0,v1是i本身经过两次自增变成2。如果函数传入顺序是fun(i++,++i)此时输出1,2,又如果是fun(i++,i++)此时输出变成1,0。