列印格式標誌
C 標準(C11 和 C99 也是)為 printf()
定義了以下標誌:
標誌 | 轉換 | 含義 |
---|---|---|
- |
所有 | 轉換的結果應在欄位內左對齊。如果未指定此標誌,則轉換是右對齊的。 |
+ |
簽名數字 | 簽名轉換的結果應始終以符號(’+‘或’ - ‘)開頭。只有在未指定此標誌的情況下轉換負值時,轉換才應以符號開頭。 |
<space> |
簽名數字 | 如果簽名轉換的第一個字元不是符號,或者簽名轉換不會產生任何字元,則應將 <space> 作為結果的字首。這意味著如果出現 <space> 和’+ ‘標誌,則應忽略 <space> 標誌。 |
# |
所有 | 指定將值轉換為替代形式。對於 o 轉換,它將增加精度,當且僅在必要時,強制結果的第一個數字為零(如果值和精度都為 0,則列印單個 0)。對於 x 或 X 轉換說明符,非零結果應以 0x (或 0X )為字首。對於 a ,A ,e ,E ,f ,F ,g 和 G 轉換說明符,結果應始終包含基數字符,即使基數字符後面沒有數字。如果沒有此標誌,只有在跟隨數字後,才會在這些轉換的結果中顯示基數字符。對於 g 和 G 轉換說明符,不應像通常那樣從結果中刪除尾隨零。對於其他轉換說明符, |
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 | 十進位制轉換結果的整數部分應使用數千個分組字元進行格式化。對於其他轉換,行為未定義。使用非貨幣分組字元。 |