列印格式標誌

C 標準(C11 和 C99 也是)為 printf() 定義了以下標誌:

標誌 轉換 含義
- 所有 轉換的結果應在欄位內左對齊。如果未指定此標誌,則轉換是右對齊的。
+ 簽名數字 簽名轉換的結果應始終以符號(’+‘或’ - ‘)開頭。只有在未指定此標誌的情況下轉換負值時,轉換才應以符號開頭。
<space> 簽名數字 如果簽名轉換的第一個字元不是符號,或者簽名轉換不會產生任何字元,則應將 <space> 作為結果的字首。這意味著如果出現 <space> 和’+‘標誌,則應忽略 <space> 標誌。
# 所有 指定將值轉換為替代形式。對於 o 轉換,它將增加精度,當且僅在必要時,強制結果的第一個數字為零(如果值和精度都為 0,則列印單個 0)。對於 xX 轉換說明符,非零結果應以 0x(或 0X)為字首。對於 aAeEfFgG 轉換說明符,結果應始終包含基數字符,即使基數字符後面沒有數字。如果沒有此標誌,只有在跟隨數字後,才會在這些轉換的結果中顯示基數字符。對於 gG 轉換說明符,不應像通常那樣從結果中刪除尾隨零。對於其他轉換說明符,
0 數字 對於 d,i,o,u,x,X,a,A,e,E,f,F,g 和 G 轉換說明符,前導零(跟隨符號或基數的任何指示)用於填充到欄位寬度而不是執行空間填充,除非轉換無窮大或 NaN。如果同時出現'0’和’ - ‘標誌,則忽略'0’標誌。對於 d,i,o,u,x 和 X 轉換說明符,如果指定了精度,則應忽略 0 標誌。 ⌦如果同時出現'0’和 <apostrophe> 標誌,則在零填充之前插入分組字元。對於其他轉換,行為未定義。 ⌫

Microsoft 也支援這些標誌具有相同的含義。

printf() 的 POSIX 規範增加了:

標誌 轉換 含義
' 我,d,u,f,F,g,G 十進位制轉換結果的整數部分應使用數千個分組字元進行格式化。對於其他轉換,行為未定義。使用非貨幣分組字元。