C语言:这道根据编辑器不同得到不同结果我没弄明白~

来源:百度知道 编辑:UC知道 时间:2024/05/17 05:52:10
#include<stdio.h>
void main()
{
int f(int a,int b);
int i=2,p;
p=f(i,++i);
printf("%d\n",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;)
}

如果按自左至右顺序求实参的值 程序结果为-1
从右向左结果为0

这是为什么呢 我只能看书来得-1那种情况

望解答~

从右向左求实参的值的话应该是0

应为先求++i,按照这题,i此时应该是3,再向左的话i还是等于3啊,因为i在内存中只占有一个空间,求右边的++i的时候,i值改变了,再向左的话i值还是3,并没有改变,最终条件是i=i,所以应该返回0;

D