不建议这样写语句。在不同的编译器上可能有不同的结果。一些编译器会对这样的语句发出警告信息。
推断你的编译器处理这个语句时,在传参给 printf 的时候, ++i, ++j 先求值,导致 i, j 都加了1之后才送给 printf。警告你 ++i, ++j 的求值顺序不确定。在某些编译器上会得出你想要的 9,11,10,12,9,11.
++i是先增加,后执行当前语句。所以相当于下面程序:
void main()
{
int m,n,i,j;
i=8;j=10;
++i;++j;
m=i;n=j;
++i;++j;
printf("%d,%d,%d,%d,%d,%d\n",i,j,i,j,m,n);
}
结果就不言而喻了吧
m=++i
printf("%d,%d,%d,%d,%d,%d\n",i,j,++i,++j,m,n)中的++i都进行了i=i+1的操作。
C语言程序是先编译后执行的。
函数的参数从右向左处理的.