[求助]关于float输出的问题?
#include<stdio.h>max(float x,float y)
{
float z;
z=x>y?x:y;
return z;
}
main()
{
float a,b,c;
scanf("%f,%f,",&a,&b);
c=max(a,b);
printf("Max is %f",c);
}
比如输入:
1.5,2.5
结果是: Max is 2.000000
为什么不是2.500000?
[此贴子已经被作者于2007-8-5 13:42:29编辑过]
----------------解决方案--------------------------------------------------------
#include<stdio.h>
max(float x,float y) /*这个函数的作用是输出较大数*/
{
float z;
z=x>y?x:y; /*如果x>y则z=x,否则输出z=y*/
return z;
}
main()
{
float a,b,c;
scanf("%f,%f,",&a,&b);
c=max(a,b);
printf("Max is %f",c);
}
将输入的a,b中的较大数赋值给c
你输入的最大的数都是2,怎么可能输出2.500000呢???
----------------解决方案--------------------------------------------------------
写错了.
应该是
输入是:1.5,2.5
结果是: Max is 2.000000
为什么不是2.500000?
[此贴子已经被作者于2007-8-5 13:41:31编辑过]
----------------解决方案--------------------------------------------------------
返回值的问题
max(float x,float y) 要写成
float max(float x,float y)
如果没有返回值类型,tc默认为int型,2.500000就变成2了
----------------解决方案--------------------------------------------------------
要对函数的类型进行定义,否则 凡是未在调用前定义的函数,都默认其返回植为整形
----------------解决方案--------------------------------------------------------
在调用函数之前你应该定义函数的类型,如果不定义系统会默认为是int型的.
----------------解决方案--------------------------------------------------------
赞成4,5,6楼的说法
被调函数要定义为float型,因为如果不加以定义,而只有裸的函数名,在C语言之中系统会自动按整形处理。
所以返回值也就变成了整形。
虽然你在函数中定义的变量Z为单精度浮点型,但返回值类型以函数类型为准。
----------------解决方案--------------------------------------------------------
形参里面不是已经定义了float。输出不是浮点数了吗。
[此贴子已经被作者于2007-8-5 18:37:30编辑过]
----------------解决方案--------------------------------------------------------
不是,2.5这个值在传递之前先进行强制类型转换,转换为2,在返回主函数去
所以,赋给主函数中的c的时候,这个值已经变为2了
赋给c的时候,又将整数2转换为浮点数2.000000
----------------解决方案--------------------------------------------------------
哦,终于明白了。谢谢各位
----------------解决方案--------------------------------------------------------