今天這篇,想給大家把printf拿出來再詳細(xì)講一講,因?yàn)椴簧偻瑢W(xué)反映只會用,但一些參數(shù)、返回值什么的還不了解,所以今天總結(jié)一二,給大家總結(jié)和梳理一下,算是拋磚引玉,能給大家打開大門,下面開始。
首先,以下四種printf的用法想必大家都應(yīng)該很熟悉。
除此以外,各種\n、\t 、\r、\b等轉(zhuǎn)義字符不再講解,大家可自行查表。
我們著重講解以下幾種功能:
1.多進(jìn)制轉(zhuǎn)換功能
除了上圖截圖所示,我們可以輸出常規(guī)字符、數(shù)字、字符串、小數(shù)以外,我們還可以輸出我們想要的十進(jìn)制對應(yīng)的八進(jìn)制、十六進(jìn)制數(shù)。如下圖,輸出99和它對應(yīng)的八進(jìn)制和十六進(jìn)制數(shù),方便快速轉(zhuǎn)換輸出:
但注意,程序里體現(xiàn)不出二進(jìn)制哦!
2.控制輸出占位寬、左右對齊。
以%d為例,我們輸出的數(shù)字默認(rèn)都是以實(shí)際占位輸出,如下圖:
當(dāng)我們想以每個(gè)數(shù)字都用固定的寬度輸出時(shí),可以在%和d之間加一個(gè)數(shù)來表示位寬,比如占10位,則寫成%10d,效果如下:
看到了嗎?如果想讓它們還像原來左打頭呢,就把10換成-10即可,試試看:
此時(shí)依舊占位10個(gè)字節(jié),雖然肉眼看不出來!
3.小數(shù)位數(shù)控制
大家在定義float和double類型時(shí),有沒有遇到過這樣的情形呢?
浮點(diǎn)數(shù)a只有兩位有效小數(shù),而%f默認(rèn)輸出6位,就會有多余的4個(gè)0,我不想要怎么辦?答:控制小數(shù)位數(shù)。
怎么控制?%和f之間加.2即可,變成%.2f,效果如下:
如果保留5位就%.5f以此類推,并且可以和上面講的控制位寬和對齊方向同時(shí)使用哈。給大家看看:
一共占5位,靠右對齊(這里拋一個(gè)問題,如果這里位寬為3小于實(shí)際4位怎么辦?請自行思考上機(jī)測試)
怎么樣,大家學(xué)會了嗎?
4. ?*號的用法
*在printf里可以代表一個(gè)泛整數(shù),可以代表任何整數(shù)。它可以出現(xiàn)在位寬的位置,也可以出現(xiàn)在小數(shù)位數(shù)的位置。
但在printf的雙引號外面,必須要有*對應(yīng)的數(shù)值。
比如我的位寬不確定,想用整數(shù)a表示,則可以寫成:
表示輸出浮點(diǎn)數(shù)a,占b個(gè)寬度,能看明白嗎?
同理,也可以左對齊,也可以再用一個(gè)*數(shù)字表示小數(shù)。注意*和數(shù)字的對應(yīng)關(guān)系即可。如下:
5.返回值的作用及用法
不少同學(xué)問過我說printf的返回值是什么意思,此前可以參考文章《幾個(gè)C語言筆試題》中第一個(gè)題的講解學(xué)習(xí)。
printf的返回值為一個(gè)整數(shù)類型,是打印的字符個(gè)數(shù),而并非幾個(gè)數(shù)字、幾個(gè)字符。和位寬的概念一致,比如
注意這里\n轉(zhuǎn)義字符也算一個(gè)。
以上,大家親自上機(jī)測試,很容易明白。
有問題請大家隨時(shí)留言聯(lián)系我們!
以上幾種功能,大家看明白了嗎?看明白趕緊上機(jī)測試吧!
還有什么功能、不明白的問題歡迎留言告知我們!
C語言研究中心(www.sztianhecheng.cn)