用於列印的轉換說明符
轉換說明符 | 引數型別 | 描述 |
---|---|---|
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
的樣式。
最後,除非使用’#‘標誌,否則應從結果的小數部分中刪除任何尾隨零,如果沒有剩餘小數部分,則應刪除小數點字元。