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

C 語言 printf 格式字串與實際類型不匹配導致輸出為 0

     編輯:程式設計綜合問答

錯誤代碼


float m = min(a, b);
printf("min is %d\n", m); // %d 對應 int,傳入 float

原因

%d 期望 4 位元組整數,但 float 在堆疊上以 IEEE-754 表示,位元模式被誤讀為整數,通常為 0(小數值的高位為 0)。

修正


printf("min is %f\n", m); // 或 %.2f 保留兩位小數

延伸

  • %f 對應 double,float 會自動提升為 double 傳遞。
  • 啟用編譯器警告(-Wformat//W4)可在編譯期偵測此類錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved