C語言庫函式-printf()
printf函式的宣告如下:
int printf(const char *format, ...)
printf() 的格式控制字串組成如下:
%[flags][width][.precision][length]specifier
%[標誌][最小寬度][.精度][長度]說明符,其中[]代表可選的。
一、flags(標誌)
在給定的欄位寬度內左對齊,預設是右對齊。如下圖,當以10個字元寬度輸出時候,預設是右對齊,如果在輸出時加入-標誌,則會按照左對齊輸出。
強制在結果之前顯示加號或減號(+ 或 -),即正數前面會顯示 + 號。預設情況下,只有負數前面會顯示一個 - 號。如下圖,當僅以%d輸出8時,僅僅輸出8,而不會在8的前面加上正號。但是如果在輸出的時候加上+標誌,則會在結果顯示前加入正號。
1.3、(space)
如果沒有寫入任何符號,則在該值前面插入一個空格。同樣看上面的例子,在以% d輸出時。在8的前面有一個空格。
與 o、x 或 X 說明符一起使用時,非零值前面會分別顯示 0、0x 或 0X。與 e、E 和 f 一起使用時,會強制輸出包含一個小數點,即使後邊沒有數字時也會顯示小數點。預設情況下,如果後邊沒有數字時候,不會顯示顯示小數點。與 g 或 G 一起使用時,結果與使用 e 或 E 時相同,但是尾部的零不會被移除。如下圖,第一個是以十進位制輸出8,第二個是以八進位制輸出10,轉換成二進位制位001 000,剛好對應十進位制為8,第三個是以十六進位制輸出,只不過是在十六進位制標識0x,第四個是以八進位制輸出,在輸出結果前加入八進位制標識0,以0開頭的數字就是八進位制,例如定義一個變數int a = 010;以十進位制輸出a就是8.
在指定填充 padding 的數字左邊放置零(0),而不是空格,這個是跟寬度引數一塊用。如下圖,其中3是可選項width的引數,代表三個寬度,如果前面加入0,則代表前面以0填充而不是空格填充。
二、width(寬度)
2.1、(number)
要輸出的字元的最小數目。如果輸出的值短於該數,結果會用空格填充。如果輸出的值長於該數,結果不會被截斷。
寬度在 format 字串中未指定,但是會作為附加整數值引數放置於要被格式化的引數之前。如下圖,如果想和上面的圖輸出一至,寬度可以作為一個引數傳遞實現相同輸出。
三、precision(精度)
同width用法相同。
四、length(長度)
在此我們只要知道hh佔一個位元組,h佔兩個位元組,l佔四個位元組,ll佔八位元組即可。如下圖,將~0以十六進位制輸出。
五、specifier(說明符)
說明符是必選項,比較常用。說兩個不經常用到的,如下圖,如需要列印%符號,只需%%即可,如果需要輸出引號則需要加轉義字元\。
所有的測試如下,稍微做一些變動。
如何快速記住格式呢,就記首字母吧,FWPLS,多念幾次就記住了。且慢,突然想到一個好的記憶方法,在這字母加入一個U字母,也就是U(你),FWPLUS,後四個字母plus是加的意思,FW聯想一下,第一個想到的就是FW(廢物),巧了,搜狗也是。連在一塊就是廢物+,而且還加了一個U。噗哈哈...
- Spring中實現非同步呼叫的方式有哪些?
- 帶引數的全型別 Python 裝飾器
- 整理了幾個Python正則表示式,拿走就能用!
- SOLID:開閉原則Go程式碼實戰
- React中如何引入CSS呢
- 一個新視角:前端框架們都卷錯方向了?
- 編碼中的Adapter,不僅是一種設計模式,更是一種架構理念與解決方案
- 手寫程式語言-遞迴函式是如何實現的?
- 一文搞懂模糊匹配:定義、過程與技術
- 新來個阿里 P7,僅花 2 小時,做出一個多執行緒永動任務,看完直接跪了
- Puzzlescript,一種開發H5益智遊戲的引擎
- @Autowired和@Resource到底什麼區別,你明白了嗎?
- CSS transition 小技巧!如何保留 hover 的狀態?
- React如此受歡迎離不開這4個主要原則
- LeCun再炮轟Marcus: 他是心理學家,不是搞AI的
- Java保證執行緒安全的方式有哪些?
- 19個殺手級 JavaScript 單行程式碼,讓你看起來像專業人士
- Python 的"self"引數是什麼?
- 別整一坨 CSS 程式碼了,試試這幾個實用函式
- 再有人問你什麼是MVCC,就把這篇文章發給他!