当前位置: 代码迷 >> C语言 >> [求助]关于float输出的问题?
  详细解决方案

[求助]关于float输出的问题?

热度:265   发布时间:2007-08-05 13:14:56.0
[求助]关于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编辑过]

搜索更多相关的解决方案: float  输出  

----------------解决方案--------------------------------------------------------
#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
----------------解决方案--------------------------------------------------------
哦,终于明白了。谢谢各位
----------------解决方案--------------------------------------------------------
  相关解决方案