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