C連載19-Printf中的標記舉例

1、printf()中的標記

1.標記簡介

標記 含義
- 待打印項左對齊,即從字段的左側開始打印該項,示例:"-20s"
+ 有符號值若爲正,則在值前面顯示加號;若爲負,則在值前面顯示減號,示例:"+6.2f"
空格 有符號值爲正,則在值前面顯示前導空格(不顯示任何符號);若爲負,則在值前面顯示減號+標記覆蓋一個空格,示例" 6.2f"
# 把結果轉換爲另外一種形式,若是是%o格式,那麼以0開始;若是是%x或者%X格式,則以0x或者0X開始;對於全部的浮點格式,#保證了即便後面沒有任何數字,也打印一個小數點字符,對於%g或者%G格式,#防止結果後面的0被刪除,示例:"%#o「、」%#8.0f"、"%+#10.3e"
0 對於數值格式,用前導0代替空格填充字段寬度,對於整數格式,若是出現-標記或者指定精度,則忽略該標記,示例:"%010d"和「%0.83f」
  • 下面咱們直接舉例子
#include<stdio.h>
#define	PAGES 959
int D19_1_width(void) {
	printf("*%d*\n", PAGES);
	printf("*%2d*\n", PAGES);
	printf("*%10d*\n", PAGES);
	printf("*%-10d*\n", PAGES);

	return 0;
}

19.1

  • 接下里試一試浮點數
#include<stdio.h>
int D19_2_floats(void) {
	const double RENT = 3852.99;   //const 變量
	printf("*%f*\n", RENT);
	printf("*%e*\n", RENT);
	printf("*%4.2f*\n", RENT);
	printf("*%3.1f*\n", RENT);
	printf("*%10.3f*\n", RENT);
	printf("*%10.3E*\n", RENT);
	printf("*%+4.2f*\n", RENT);
	printf("*%010.2f*\n", RENT);

	return 0;
}

19.2

  • 能夠從上面看出來,只有一個第一個是有疑問的,這種狀況下,字段寬度和小數點後面的位數均是系統默認的配置,即字段寬度是容納待打印數字所須要的位數和小數點後打印6位小數。第二個也是有默認的設置,編譯器在小數點的左側打印1個數字,在小數點的右側打印6個數字。其餘的都在乎料中。
  • 嘗試修改RENT值,看一下打印結果
#include<stdio.h>
int D19_3_flags(void) {
	printf("%x %X %#x\n", 31, 31, 31);
	printf("**%d**% d**\n", 42, 42, -42);
	printf("**%5d**%5.3d**%05d**%05.3d**\n", 6, 6, 6, 6);
	return 0;

}

19.3

  • 第一行前兩個是十六進制數,第三個也是,可是會加一個標識符ox
  • 第二行知足表格裏的內容
  • 第三行前三個好說,第四個若是0標記和精度一塊兒出現,0會被忽略

2、源碼:

相關文章
相關標籤/搜索