| 我记得好像看到某个文章里面说C语言里面的函数参数压栈顺序与求值顺序是两回事。 压栈顺序是从右到左,而求值顺序则是undefined的,由编译器实现决定,例如 (1)处f函数调用,先计算顺序g,还是先计算h这个由编译器决定。而参数的压栈则是固定的由右到左,现将h的结果压栈,然后g的结果压栈。 |
------------------------------------------------------------
int func(int x,int y)
{
printf(" x:%d y:%d",x,y);
}
int main()
{
int x = 2;
func(x++,x); /*1*/
x=2;
func(x,x++); /*2*/
}
以上代码在测试时发现对于调用1来说打印的x=2,y=3;对于调用2来说x=3,y=2
{
printf(" x:%d y:%d",x,y);
}
int main()
{
int x = 2;
func(x++,x); /*1*/
x=2;
func(x,x++); /*2*/
}
以上代码在测试时发现对于调用1来说打印的x=2,y=3;对于调用2来说x=3,y=2