首頁  >  問答  >  主體

C/C++中 使用scanf和printf如何读入输出double型数据。

C/C++中 使用scanfprintf如何读入输出double型数据。

使用%lf,出现了如图所示的情况

应该scanf使用%lfprintf使用%f么?
为什么?

ringa_leeringa_lee2762 天前1287

全部回覆(2)我來回復

  • 黄舟

    黄舟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;

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 13:47:23

    能double就盡量不要float 雖然有點佔用內存 還有二者盡量不要混用

    回覆
    0
  • 取消回覆