【例6.5】下面的程序为什么出现编译警告信息?
#include <stdio.h>
double sum
(double
,double
);
int main
(
)
{
float x
, y
;
scanf
( "%f %f"
, &x
, &y
);
y=sum
(x
, y
)*10
;
y =sum
(x
,y
);
printf
( "%f\n"
, y
);
return 0
;
}
double sum
( double a
, double b
)
{
return a+b
;
}
函数变量类型是double,主程序里声明的x和y是float类型,这就产生数据类型的变换,可能会因为变换带来精度误差,所以编译系统给出警告信息,请用户验证。
如果将x和y声明为double类型,则printf和scanf的格式要做相应修改,应该分别改为如下形式:
double x
,y
;
scanf
( "%lf %lf"
, &x
, &y
);
printf
( "%lf"
, y
);