c语言 函数参数自增运算符问题

发布时间:2024-06-11 00:49 发布:上海旅游网

问题描述:

main()
{ int i=2,p;
p=f(i,++i);
printf("%d",p);
}
int f(int a, int b)
{ int c;
if(a>b) c=1;
else if(a==b) c=0;
else c=-1;
return(c);
}
请问这段程序为什么结果是0,而不是1,++i不是先要让i的值增加后再进行其它运算吗?

问题解答:

编译器的不同 结果可能不同~~
p(i,++i)
有的传递的参数是2,3
有的传递的参数是3,3
运算顺序从左至右和从右至左~~
如果传递的参数是2,3 那么返回值为-1 如果传递的参数是3,3 那么返回0

(i,++i);
执行之前i为3 然后 才压栈
调用的是
p =f (3,3);

热点新闻