C++中printf()函數的用法10-7

printf()的參數格式如下所示

%[flags][width][.precision][size]type

其中,type是必須要有的,而其他四個域是可選的。其中flags域用來控制輸出是否包含正負號、空格、0、小數點和八進制或者十六進制標誌的前綴。flags域中可以包含一個或多個符號來表示指令,這些符號出現的順序是沒有要求的。

1 對齊指令

printf()函數默認是右對齊的,例如

int i = 12;

printf("%6d", i);

其中,printf()函數中的參數“6”表示輸出的長度是6,此時輸出的結果是右對齊的,如圖1所示。

 

圖1 默認右對齊

在flags域中使用“-”符號使得輸出變爲左對齊,如圖2所示。

printf("%-6d", i);

 

圖2 對齊方式變爲左對齊

2 輸出正數有“+”

默認情況下,printf()函數只有在處理負數的時候纔會輸出其符號,處理正數時不會輸出符號。可以將flags域設置爲“+”,此時正數時會輸出其符號,如圖3所示。

int i = 12;

printf("%+d", i);

 

圖3 輸出“+”

3 補0指令

如果指定了輸出結果的寬度,那麼在寬度域前面的flags域中可以指定補0。

printf("%06d", i);

此時會在右對齊輸出i的同時,將輸出的空格位補0,如圖4所示。

 

圖4 補0

需要注意的是,如果此時flags域中含有“-”,即指定輸出左對齊,則補0指令無效。

printf("%-06d", i);

此時的輸出與圖2相同。

4 輸出空格

當要輸出的是有符號的數字,並且是正數時,可以將flags域設置爲空格,此時的輸出前也相應有空格,如圖5所示。

printf("% d", i);

 

圖5 空格

當輸出的數字是負數或者flags域中帶有“+”指令時,空格指令無效。

printf("%+d", i);

此時的輸出與圖3輸出相同。

5 #指令

當以八進制或者十六進制的格式輸出指定數字時,即type的類型是“o”、“x”或者“X”時,flags域中的#指令的作用是爲八進制或者十六進制添加前綴,如圖6所示。

printf("%#x", i);

 

圖6 添加前綴

需要注意的是,當type類型是“X”時,輸出的前綴是“0X”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章