讀古今文學網 > 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 
);