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