C語言中,printf()函數針對輸出不一樣的數據類型,有不一樣的格式控制符,此處彙總了一些經常使用的格式控制符:函數
%hd
用來輸出 short int 類型,hd 是 short decimal 的簡寫;%d
用來輸出 int 類型,d 是 decimal 的簡寫;%ld
用來輸出 long int 類型,ld 是 long decimal 的簡寫。
在輸出整數方面,格式控制符和整數的符號是緊密相關的,具體就是:spa
printf函數並不支持「輸出負的八進制或者十六進制數」。code
下表總結了不一樣類型的整數,以不一樣進制的形式輸出時對應的格式控制符(--表示沒有對應的格式控制符)blog
short | int | long | unsigned short | unsigned int | unsigned long | |
---|---|---|---|---|---|---|
八進制 | -- | -- | -- | %ho | %o | %lo |
十進制 | %hd | %d | %ld | %hu | %u | %lu |
十六進制 | -- | -- | -- | %hx 或者 %hX | %x 或者 %X | %lx 或者 %lX |
對於一個有符號的正數,它的符號位是0,當按照無符號數的形式讀取時,符號位就變成了數值位,可是該位剛好是0而不是1,所以,用%o或者%x輸出,不會有影響;內存
若是一個有符號整數是負數,這時候用%o或者%x輸出,則結果就會截然不同。ci
能夠說,「有符號正數的最高位是0」這個巧合才使得%o和%x輸出有符號數時不會出錯字符串
小數的輸出格式:string
下面有一段演示代碼io
#include <stdio.h> #include <stdlib.h> int main() { float a = 0.302; float b = 128.101; double c = 123; float d = 112.64E3; double e = 0.7623e-2; float f = 1.23002398; printf("a=%e \nb=%f \nc=%lf \nd=%lE \ne=%lf \nf=%f\n", a, b, c, d, e, f); return 0; }
輸出結果爲:table
a=3.020000e-01
b=128.100998
c=123.000000
d=1.126400E+05
e=0.007623
f=1.230024
對代碼的說明:
另外,小數還有一種更加只能的輸出方式,就是使用%g。 %g會對比小數的十進制形式和指數形式,以最短的方式輸出小數,讓輸出結果更加簡練。所謂最短,就是輸出結果佔用最少的字符。
讀者須要注意的兩點是:
除了 %g,還有 %lg、%G、%lG:
e
小寫。E
大寫。