請求printf()打印變量的指令取決於變量的類型,例如打印整數用%d符號,打印字符用%c符號,這些符號稱爲轉換說明(conversion specification),由於它們指定了如何把數據轉換成可顯示的形式git
printf(Control-string,item1,item2,。。。);函數
控制字符串(control-string):是一個描述項目如何打印的字符串,因此須要使用雙引號「」,以及應該爲每一個要打印的項目包含一個轉換說明符,且必須一一對應,不可多一少一,就算在最好狀況下也只能獲得無心義的值!測試
項目:item1,item2等等都是要打印的項目,能夠是變量、常量,甚至能夠是須要計算的表達式ui
轉換說明spa |
輸出指針 |
%aci |
浮點數、十六進制數字和p-記數法(C99)字符串 |
%Astring |
浮點數、十六進制數字和P-記法(C99)it |
%c |
一個字符 |
%d |
有符號十進制整數 |
%e |
浮點數、e-記數法 |
%E |
浮點數、E-記數法 |
%f |
浮點數、十進制記數法 |
%g |
根據數值不一樣自動選擇%f或%e,%e格式在指數小於-4或者大於等於精度時使用 |
%G |
根據數值不一樣自動選擇%f或%E,%E格式在指數小於-4或者大於等於精度時使用 |
%i |
有符號十進制數(與%d相同) |
%o |
無符號八進制整數 |
%p |
指針 |
%s |
字符串 |
%u |
無符號十進制整數 |
%x |
使用十六進制數字0f的無符號十六進制整數(0f中是數字0,而不是字母o) |
%X |
使用十六進制數字0F的無符號十六進制整數 |
%% |
打印一個百分號 |
能夠在%和定義轉換字符之間經過插入修飾符對基本的轉換說明加以修改,若是使用了一個以上的修飾符,那麼它們應該與上表中出現的順序相同,也並非全部的組合都是可能的
下列列出的是printf()修飾符
修飾符 |
意義 |
標誌 |
五種標誌 (-、+、空格、# 和0) 都將在後表中描述,可使用零個或多個標誌 例如:」%-10d」 |
digit(s)
|
字段寬度的最小值。若是該字段不能容納要打印的數或者字符串,系統會使用更寬的字段。示例:「%4d」,字段寬度包括符號,即12.23佔5位! 即A.B形式中的A,下面的精度爲A.B形式中的B,當位數不足會在前面自動補空格,超過正常顯示 |
.digit(s)
|
精度。對於%e、%E和%f轉換,是將要在小數點的右邊打印的數字的位數。對於%g和%G轉換,是有效數字的最大位數。對於%s轉換,是將要打印的字符的最大數目。對於整數轉換,是將要打印的數字的最小位數;若是必要,要使用前導零來達到這個位數。只使用「.」表示其後跟隨一個零,因此%.f與%.0f相同。示例:「%5.2f」打印一個浮點數,他的字段寬度爲5個字符,小數點後有兩個數字。 |
h |
和整數轉換說明符一塊兒使用,表示一個short int 或者 unsigned short int 類型數值。 示例:「%hu」、「%hx」和「%6.4hd」 |
hh
|
和整數轉換說明符一塊兒使用,表示一個signed char 或者unsigned char類型數值。 示例:「%hhu」、「%hhx」和「%6.4hhd」 |
j
|
和整數轉換說明符一塊兒使用,表示一個intmax_t或uintmax_t值。 示例:「%jd」和「%8jX」 |
l(字母)
|
和整數說明符一塊兒使用,表示一個long int 或者unsigned long int 類型值。 示例:「%ld」和「%8lu」 |
ll(字母)
|
和整數說明符一塊兒使用,表示一個long long int或 unsigned long long int 類型值 (C99)。 示例:「%lld」和「%8llu」 |
L
|
和浮點轉換說明符一塊兒使用,表示一個long double值。 示例:「%Lf」和「%10.4Le」 |
t
|
和整數轉換說明符一塊兒使用,表示一個ptrdiff_t值(與兩個指針之間的差相對應的類型) (C99) 示例:「%td」和「%12ti」 |
z
|
和整數轉換說明符一塊兒使用,表示一個size_t值(sizeof返回的類型) (C99)。 示例:「%zd」和「%12zx」 |
標誌 |
意義 |
- |
項目是左對齊的:也就是說,會把項目打印在字段的左側開始處 例如:」%-20s」 |
+ |
有符號的值若爲正,則顯示帶加號的符號:若爲負,則帶減號的符號 例如:」%+6.2f」 |
(空格) |
有符號的值若爲正,則顯示帶前導空格(可是不顯示符號):若爲負,則帶減號符號。+標示會覆蓋空格標誌 例如:」% 6.2f」 |
# |
使用轉換說明的可選形式。若爲%o格式,則以0開始;若爲%x和%X格式,則以0x或0X開始,對於全部的浮點形式,#保證了即便不限任何數字,也打印一個小數點字符。對於%g和%G格式,它防止尾隨零被刪除。 例如:「%#o」、「%#8.0f」和「%+#10.3E」 |
0 |
對於全部的數字格式,用前導零而不是用空格填充字段寬度。若是出現-標誌或者指定了精度(對於整數)則忽略該標誌。 例如:「%010d」和「%08.3f」 |
printf函數也有一個返回值,它返回所打印的字符的數目,若是輸出錯誤,那麼printf()會返回一個負數,使用返回值得一個可能緣由是要檢查輸出錯誤,好比在讀入文件輸出的時候進行判斷
當打印較多內容時能夠採用下列兩種方法:
1、使用反斜槓符號 \ ,在上一行的末尾加上,下一行便可繼續,注意下一行必須刪除前面的空格,不然也會輸出前面的空格
例如:
printf("asdasdad\
sadasdadad\n"); //輸出連續的字符串
printf("asdasdad\
sadasdadad\n"); //輸出帶空格的字符串,asdasda adadasdas
2、可直接使用多個雙引號拼接,可不用刪除前面的空格,建議使用
例如:
printf("sadasda"
"dasdada"
"dasdada"
"dasdada"); //輸出連續的asdadadadasdadadasdadadada