这段代码是不是这样理解的?
#include<stdio.h>
int f(int a,int b)
{
int c;
if(a>b) c=1;
else if(a==b) c=0;
else c=-1;
return (c);
}
main()
{
int i=2,y;
y=f(i,++i);
printf("y=%d\n",y);
printf("%d\n",i);
}
这段代码出来的结果是y=0,i=3
这个i=3是不是f(i,++i)因为++i原来i=2所以就变成3了?
然后就变成了y=f(3,3)这样子?
所以if(a==b) c=0;
所以y=f(i,++i);所以y=0这样?这样理解是对的吗?
[解决办法]
这样调用
进去的时候
a== b;
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
所以你的理解应该是对!不过不建议这么用!
[解决办法]
属于未定义行为,参看置顶贴,不要在同一个语句中包含i和i++
[解决办法]
理解是对的!
[解决办法]
表示右边的是重右向左开始!所以理解非常正确!