C/C++中 使用scanf
和printf
如何读入输出double型数据。
使用%lf
,出现了如图所示的情况
应该scanf
使用%lf
,printf
使用%f
么?
为什么?
黄舟2017-04-17 13:47:23
注意scanf函數和printf函數是不同尋常的函數,因為它們都沒有將函數的參數限制為固定數量。 scanf函數和printf函數又可變長度的參數列表。當呼叫具有可變長度參數清單的函數時,編譯器會安排float參數自動轉換成為double類型,其結果是printf函數無法區分float型和double型的參數。因此在printf函數呼叫中%f既可以表示float型又表示double型的參數。
另一方面,scanf函數是透過指標指向變數的。 %f告訴scanf函數在所傳位址位置上儲存一個float型值,而%lf告訴scanf函數在所傳位址位置上儲存一個double型值。這裡float和double的差別是非常重要的。如果給出了錯誤的轉換說明,那麼scanf函數將可能儲存錯誤的位元組數量(沒有提到的是,float型的為模式可能不同於double型的位元模式)。
答案在此
問之前多搜尋
如果可以用CPP的話iostream比較容易用一些
cin>>doubleValue;
cout<< doubleValue;