首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言float輸出亂碼?printf格式符%lf vs %f

     編輯:C 語言問答

現象

float x = 12345.6f;
printf("%lf\n", x); // 輸出亂碼或 0

原因

  • printf 是可變參函數,**默認參數提升**:float → double。
  • %f 對應 double,**兼容** 提升後的 float。
  • %lf 在 C99 標準中才正式用於 printf 表示 double(舊標準 %lf 未定義),部分舊編譯器(如 VC6、Turbo C)不支持,導致解析錯誤。

正確做法

float x = 12345.6f;
printf("%f\n", x);      // 始終正確
printf("%.2f\n", x);    // 保留2位小數

scanf 區別

scanf 接收**地址**,無提升:

  • float f; scanf("%f", &f);
  • double d; scanf("%lf", &d);

總結口訣

printf 統用 %f;scanf 分 %f/%lf。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved