首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这段代码是否这样理解的

2013-09-07 
这段代码是不是这样理解的?#includestdio.hint f(int a,int b){int cif(ab) c1else if(ab) c0el

这段代码是不是这样理解的?



#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++
[解决办法]
理解是对的!
[解决办法]
表示右边的是重右向左开始!所以理解非常正确!

热点排行