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