映月读书网 > C语言解惑 > 6.3 函数变量类型的匹配 >

6.3 函数变量类型的匹配

【例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 
);