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