问题描述:
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);