天天看點

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

在上一個小demo《printf()函數(1)》中主要說了一下printf()函數的轉換說明符,這些轉移說明符是可以被修飾的。我們可以在%d和定義的轉義字元之間通過插入修飾符對基本的轉換說明加以修改。

printf()修飾符

  • digit(s) 字元寬度的最小值
c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

結果:

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

不夠的前面補空格,超了的,不用補了。

  • .digit(s) 精度
c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

結果:

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

小數點前面表示的是字元寬度,不夠的空格填充,小數點後面表示的是有多少個數字。

  • h 和整數轉換說明符一起使用,表示一個short int 或者unsigned short int
c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

結果:

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

1024 本身就占了4個字段,是以1hd、2hd、3hd、4hd效果是一樣的,5hd有一個空格填充在前面。

  • hh 和整數轉換說明符一起使用,表示一個short char 或者unsigned char
  • l 和整數轉換說明符一起使用,表示一個long int 或者unsigned long int
  • ll 和整數轉換說明符一起使用,表示一個long long int 或者unsigned long long int
  • L 和浮點轉換說明符一起使用 ,表示一個long deuble
  • j 和整數轉換說明符一起使用,表示一個intmax_t或者uintmax_t
  • z 和整數轉換說明符一起使用,表示一個size_t值(sizeof傳回的類型)(C99)
  • t 和整數轉換說明符一起使用,表示一個ptrdiff_t值(兩個指針之間的差相對應的類型)(C99)

這幾個都是很基本的,就不過多的介紹了。

print()的标志

  • - 項目是左對齊的:也就是說,會把項目列印在字段的左側開始處
c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

結果:

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

全部左對齊了

  • + 有符号的值若為正,則顯示帶加号的符号:若為負,則帶減号的符号
c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

結果:

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

區分正負号,預設左對齊了。

  • (空格) 有符号的值若為正,則顯示時帶前導空格(但是不顯示符号);若為負,則帶減号符号。+标志會覆寫空格标志
c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

結果:

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code
  • #使用轉換說明的可選形式。若為%o格式,則以0開始;若為%x和%X格式,則以0x或0X開始。對于所有的浮點形式,#保證了及時不跟任何數字,也列印一個小數點字元。對于%g和%G格式,它防止尾随零被删除
c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

結果:

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code
  • 0對于所有的數字格式,用前導零而不是用空格填充字段寬度。如果出現-标志或者指定了精度(對于整數)則忽略該标志
c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

結果:

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

printf()的傳回值

printf()函數有一個傳回值,傳回的是所列印的字元的數目。

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

結果:

c語言 printf_[每日C語言」printf()函數的修飾符和傳回值printf()修飾符print()的标志printf()的傳回值test code

test code

#include

int main()

{

int a = 1;

printf("a is %d