用於列印的轉換說明符

轉換說明符 引數型別 描述
id INT 列印小數
u unsigned int 列印小數
o unsigned int 列印八進位制
x unsigned int 列印十六進位制,小寫
X unsigned int 列印十六進位制,大寫
f double 如果沒有給出精度,則列印浮點數,預設精度為 6(小寫字母用於特殊數字 naninfinfinity
F double 如果沒有給出精度,則列印浮點數,預設精度為 6(大寫字母用於特殊數字 NANINFINFINITY
e double 如果沒有給出精度,則使用預設精度 6 列印浮點數,使用科學記數法使用尾數/指數; 小寫指數和特殊數字
E double 如果沒有給出精度,則使用預設精度 6 列印浮點數,使用科學記數法使用尾數/指數; 大寫指數和特殊數字
g double 使用 fe [見下文]
G double 使用 FE [見下文]
a double 列印十六進位制,小寫
A double 列印十六進位制,大寫
c Char 列印單個字元
s 字元* 如果指定,則列印字串直到 NUL 終止符,或截斷為精度給定的長度
p 無效* 列印 void 指標值; nonvoid 指標應明確轉換(cast)到 void*; 指向物件的指標,而不是函式指標
% N / A 列印%字元
n int * 到目前為止列印的位元組數寫入指向的 int

請注意,長度修飾符可以應用於%n(例如,%hhn 表示以下 n 轉換說明符適用於指向 signed char 引數的指標,根據 ISO / IEC 9899:2011§7.21.6.1¶7)。

請注意,浮點轉換適用於型別 floatdouble,因為預設促銷規則 - 第 6.5.2.2 節函式呼叫,¶7 函式原型宣告符中*的省略號表示法導致引數型別轉換在最後宣告的引數之後停止。**預設引數提升是在尾隨引數上執行的。*因此,printf() 等函式只能傳遞 double 值,即使引用的變數是 float 型別。

使用 gG 格式,ef(或 EF)表示法之間的選擇記錄在 C 標準和 printf() 的 POSIX 規範中 :

表示浮點數的雙引數應以 fe 的樣式轉換(或者在 G 轉換說明符的情況下以 FE 的樣式轉換),具體取決於轉換的值和精度。如果非零,則 P 等於精度,如果省略精度,則為 ti,如果精度為零,則為 1。然後,如果使用樣式 E 的轉換將具有 X 的指數:

  • 如果 P> X> = -4,則轉換應採用 f(或 F)和 precision P - (X+1) 的樣式。
  • 否則,轉換應採用 e(或 E)和 precision P - 1 的樣式。

最後,除非使用’#‘標誌,否則應從結果的小數部分中刪除任何尾隨零,如果沒有剩餘小數部分,則應刪除小數點字元。