C语言的学习问题 3

来源:百度知道 编辑:UC知道 时间:2024/06/18 12:06:53
求这个程序的运行结果

int f1(int x,int y)
{ return x>y?x:y }
int f2(int x,int y)
{ return x>y?y:x }
main()
{ int a=4,b=3,c=5,d,e,f;
d=f1(a,b); d=f1(d,c);
e=f2(a,b); e=f2(e,c);
f=a+b+c-d-e;
printf("%d,%d,%d\n",d,f,e);
}

说得详细一点
谢谢啊

int f1(int x,int y) //返回x,y中的大者
{ return x>y?x:y ;}
int f2(int x,int y) //返回x,y中的小者
{ return x>y?y:x ;}
main()
{
int a=4,b=3,c=5,d,e,f;
d=f1(a,b); //d=a和b中大的一个,就是a
d=f1(d,c); //d=d和c中大的一个,是c=5;
e=f2(a,b); //e=a和b中小的一个,就是b;
e=f2(e,c); //e=e和c中小的一个,就是e;
f=a+b+c-d-e; //4+3+5-5-3=4
printf("%d,%d,%d\n",d,f,e); //--
}

f1是求两个数的较大值
f2是求两个数的较小值

return x>y?x:y //意思是,如果条件x>y成立,则返回x的
//值,如果条件x>y不成立,则返回y的值。

d=f1(a,b); //调用函数f1,a>b,返回a的值,d=4.
d=f1(d,c); //调用函数f1,d<c,返回c的值,d=5.
e=f2(a,b); //调用函数f2,a>b,返回b的值,e=3.
e=f2(e,c); //调用函数f2,e<c,返回e的值,e=3。
f=a+b+c-d-e; // 所以f=3+4-5-3=-1.

所以,输出的结果就不言而喻了

这个程序没法运行

f1其实是一个比较大小的函数
在f1(a,b)中因为a==4>3==b
?前提成立即返回“:”前的值4
所以f1(a,b)==4
在f1(d,c)中因为d==4<5==c
?前提不成立即返回“:”后的值5
所以返回值为5==d
同理:前e=3