c语言中,编写一个函数,为什么用double x不行,而用float x才可以??

这是我编写的一个程序:
#include "conio.h"

double fun(float x)
{
float sum;
if(x<-1.00)
sum=x*x-1.00;

else if(x>1.00)
sum=x*x+1.00;
else
sum=x*x;
return sum;
}
main()
{
float x;
double a;
scanf("%f",&x);
a=fun(x);
printf("sum=%f",a);
getch();
}

这样输出结果是正确地

但是为什么我把float x 改成 double x
输出结果就是0.00000呢??
不是很明白为什么改了就可以呢??

是因为你用的是%f格式输入的,scanf函数只是把你输入的输转化成float的格式放到x的地址,并没有考虑你的x的格式。而float和double格式是不一样的,double的长度是float的2倍,所以才会有问题。
如果你用double输入的话可以用%lf格式
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-01
函数返回至类型是双精度浮点型, 而sum是浮点型,可以将返回值类型修改成单精度浮点型就行了
第2个回答  2010-11-14
float fun(float n)
{
n=n*100;
n+=0.5;
n=(long)n;
n/=100;
return n;

}本回答被提问者采纳
第3个回答  2010-11-01
scanf("%f",&x);
改成
scanf("%lf",&x);
相似回答