用於列印的轉換說明符
| 轉換說明符 | 引數型別 | 描述 |
|---|---|---|
i,d |
INT | 列印小數 |
u |
unsigned int | 列印小數 |
o |
unsigned int | 列印八進位制 |
x |
unsigned int | 列印十六進位制,小寫 |
X |
unsigned int | 列印十六進位制,大寫 |
f |
double |
如果沒有給出精度,則列印浮點數,預設精度為 6(小寫字母用於特殊數字 nan 和 inf 或 infinity) |
F |
double |
如果沒有給出精度,則列印浮點數,預設精度為 6(大寫字母用於特殊數字 NAN 和 INF 或 INFINITY) |
e |
double |
如果沒有給出精度,則使用預設精度 6 列印浮點數,使用科學記數法使用尾數/指數; 小寫指數和特殊數字 |
E |
double |
如果沒有給出精度,則使用預設精度 6 列印浮點數,使用科學記數法使用尾數/指數; 大寫指數和特殊數字 |
g |
double |
使用 f 或 e [見下文] |
G |
double |
使用 F 或 E [見下文] |
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)。
請注意,浮點轉換適用於型別 float 和 double,因為預設促銷規則 - 第 6.5.2.2 節函式呼叫,¶7 函式原型宣告符中*的省略號表示法導致引數型別轉換在最後宣告的引數之後停止。**預設引數提升是在尾隨引數上執行的。*因此,printf() 等函式只能傳遞 double 值,即使引用的變數是 float 型別。
使用 g 和 G 格式,e 和 f(或 E 和 F)表示法之間的選擇記錄在 C 標準和 printf() 的 POSIX 規範中 :
表示浮點數的雙引數應以
f或e的樣式轉換(或者在G轉換說明符的情況下以F或E的樣式轉換),具體取決於轉換的值和精度。如果非零,則P等於精度,如果省略精度,則為 ti,如果精度為零,則為 1。然後,如果使用樣式E的轉換將具有X的指數:
- 如果 P> X> = -4,則轉換應採用
f(或F)和 precisionP - (X+1)的樣式。- 否則,轉換應採用
e(或E)和 precisionP - 1的樣式。
最後,除非使用’#‘標誌,否則應從結果的小數部分中刪除任何尾隨零,如果沒有剩餘小數部分,則應刪除小數點字元。