C语言的学习问题 26(P88-7。5)

来源:百度知道 编辑:UC知道 时间:2024/05/15 19:56:42
小弟求教
谢谢
说得细一点

求输出结果
#include <stdio.h>
int f(int ,int );
main()
{int i=2,p;
p=f(i,i+1); printf("%d\",p);
}
int f(int a,int b)
{int c;
c=a;
if(a>b) c=1;
else if(a==b) c=0;
else c=-1;
return(c);
}

谢谢

#include <stdio.h>
int f(int ,int );/*函数声明*/
main()
{int i=2,p;
p=f(i,i+1); printf("%d\",p);/*函数调用*/
}
int f(int a,int b)/*函数定义*/
{int c;
c=a;
if(a>b) c=1;
else if(a==b) c=0;
else c=-1;
return(c);
}

先解释一下f这个函数吧 if(a>b) 函数 f的值为1
if(a==b) 函数 f的值为0
if(a<b) 函数 f的值为-1
在主函数当中 定义了i=2 则i+1=3 即是p=f(2,3)带回形参中 即是a=2 b=3 所以a<b 故p=f(2,3)=-1
感觉你对函数了解得不多 如果问f(i,++i)的情况的话 这个就涉及到实参的求值顺序 不同的编译器中 有的按从左至右的顺序 有的按从右至左的顺序 有点像
printf("%d,%d",i,i++);

直接在TC2.0上试验一下就好了!