深圳广播电台招聘:C语言难题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 20:12:09
#include<stdio.h>
#include<math.h>
void main()
{
float x,y,z;
scanf("%f,%f,%f",&x,&y);
z=x+fabs(y);
printf("z=%f",z);
}
这个程序在编译的时候VC++6.0提醒
z=x+fabs(y);
这一行“conversion from 'double' to 'float', possible loss of data”
怎么解决?

在用fabs(y)时,已经将float型转换为double型,但是在算式里时要保持类型一致,所以应改为:
z=x+(float)fabs(y);
其中(float)为强制转换为float类型

fabs会返回double类型的数据,为了精度的需要,建议不要用显示转换,将float x,y,z;改为double x,y,z;要好一点

z=(float)(x+fabs(y));

fabs的返回值类型是什么?