莫名奇妙的参数传递?

cssnow 2002-06-13 07:11:08
下面的程序输入1.5,2.5
跟踪发现传递到参数中的值为x=0,y = 1.9375
为什么?《谭浩强 C程序设计(第二版)》P148-149

奇怪之一:max应该在编译时确认为库函数或者宏,但链接时显然成了自定义函数;
奇怪之二:将第一行改为max(float, float);运行结果为2。而不改时为1
奇怪之三:为什么会有跟踪的实参是0,1.9375(windows98, tc2.0)

/*float max(float, float);*/

main()
{
float a,b;
int c;

scanf("%f,%f", &a, &b);
c = max(a, b);

printf("%d\n", c);
}

max(float x, float y)
{
float z;

z = x > y ? x : y;
return(z);
}
...全文
68 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenqing1128 2002-06-14
  • 打赏
  • 举报
回复
是啊你的‘c’是int型啊
当然是⒉
chenqing1128 2002-06-14
  • 打赏
  • 举报
回复
是啊你的‘c’是int型啊
当然是⒉
WarFather 2002-06-14
  • 打赏
  • 举报
回复
我比较赞同 diaopeng(遥远) 的,你程序中函数的返回类型的确有问题。


你的max返回夫典型,而C是整形。
jieshen 2002-06-14
  • 打赏
  • 举报
回复
因为在p148页中max 是还回的直是默认的是整数,你要特别看p54页。就知道了。
第三章要看呀。好了。
honeybe 2002-06-14
  • 打赏
  • 举报
回复
scanf("%f,%f",&a,&b);
在输入是两个变量a,b的输入应为1.5,2.5

中间应该有逗号的
fangrk 2002-06-14
  • 打赏
  • 举报
回复
float max(float,float)
void main()
{...
scanf("%f %f",&a,&b);
...
}
float max(float a,float b)
{
...
}
sxbobo2002 2002-06-13
  • 打赏
  • 举报
回复
TO:codingcoding(codingcoding)
为何要写成:scanf("%f", &a);
     scanf("%f", &b);
原来的写法有问题吗?
TO:楼主,我试过,在我的机子上没有问题呀!结果:2(winxp,tc2.0)
linhui 2002-06-13
  • 打赏
  • 举报
回复
up
zjp899 2002-06-13
  • 打赏
  • 举报
回复
float max(float,float);
main()
{ float a,b;
int c;
scanf("%f,%f", &a, &b);
c = max(a,b);
printf("%d\n", c);
}

float max(float x, float y)
{float z;
z = x > y ? x : y;
return(z);
}
改成这样就好用了,至于原因我也说不清~~
不过上面的程序我在98 tc2.0下调试和书上结果一样!
diaopeng 2002-06-13
  • 打赏
  • 举报
回复
1、如果你的函数是省略返回类型的,那么编译器认为是返回int类型,所以会自动的将float换成int返回。
2、如果函数声明为返回float,而函数却定义成返回int,那么系统就认为不匹配而产生不可预料的错误
coldcrane 2002-06-13
  • 打赏
  • 举报
回复
你输入的时候也要敲','的


float max(float, float);

main()
{
float a,b;
int c;

scanf("%f,%f", &a, &b);
c =(int) max(a, b); // <<--类型转换总要吧

printf("%d\n", c);
}

float max(float x, float y) // <<--要声明返回值
{
float z;
z = x > y ? x : y;
return(z);
}
codingcoding 2002-06-13
  • 打赏
  • 举报
回复
应该这样写
scanf("%f", &a);
scanf("%f", &b);
不要为了省事

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧