首页 » C语言解惑 » C语言解惑全文在线阅读

《C语言解惑》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 );