1. 程式人生 > 其它 >C語言中,printf函式對整型,浮點型,字元型使用不同佔位符(%d, %f, %c, %s)輸出的研究

C語言中,printf函式對整型,浮點型,字元型使用不同佔位符(%d, %f, %c, %s)輸出的研究

C語言中,printf函式對整型,浮點型,字元型使用不同佔位符(%d, %f, %c, %s)輸出的研究

目錄

注意:

​ 定義的型別與輸出的型別要對應。

1.1 佔位符

格式說明由“%”和格式字元組成,如%d%f等。它的作用是將輸出的資料轉換為指定的格式輸出。格式說明總是由“%”字元開始的。

格式字元有d,o,x,u,c,s,f,e,g等。如%d整型輸出,%ld長整型輸出,%o以八進位制數形式輸出整數,%x以十六進位制數形式輸出整數,或輸出字串的地址。%u以十進位制數輸出unsigned型資料(無符號數)。注意:%d與%u有無符號的數值範圍,也就是極限的值,不然數值打印出來會有誤。%c用來輸出一個字元,%s用來輸出一個字串,%f用來輸出實數,以小數形式輸出,預設情況下保留小數點6位。%.100f用來輸出實數,保留小數點100位。%e以指數形式輸出實數,%g根據大小自動選f格式或e格式,且不輸出無意義的零。

1.2 字元型用%d列印和整型用%c列印

​ 打印出對應ASCII碼值。

例子:

void test05() {
	char ch1 = 'a';
	int a = 65;
	double b = 1.3;
    
	printf("ch1 = %c\n", ch1);
	printf("ch1 = %d\n", ch1);
    
	printf("a = %d\n", a);
	printf("a = %c\n", a);
}

結果:

ch1 = a

ch1 = 97

a = 65

a = A

1.3 整型(%d)與浮點型(%f)

​ 不能混用。

例子:

//test %d, %f
void test06() {
  int a = 65;
  double b = 1.3;
    
  printf("a = %d\n", a);
  printf("a = %.2f\n", a);

  printf("b = %.2f\n", b);
  printf("b = %d\n", b);
}

結果:

a = 65

a = 0.00

b = 1.30

b = -858993459

1.4字元(%c)與字串(%s)

(1)字元(%c)形式列印字串

​ 列印字元printf語句輸入的是值,列印字串,輸入的是地址。用%s的形式列印字元會報錯

例子:

//test %c, %s
void test07() {
  char ch1 = 'w';
  char str2[3] = "go";
    
  printf("ch1 = %c\n", ch1);
  printf("str2[0] = %c\n", str2[0]);

  printf("ch1 = %s\n", &ch1);
  printf("str2 = %s\n", str2);
}

結果:

ch1 = w

str2[0] = g

ch1 = w燙燙<

肄瘥?

str2 = go

(2)列印字串(%s)

注意事項:

①遇到'\0'結束

②對於沒有’\0’的字元陣列,當實際賦值的長度小於定義的長度時,列印實際的長度;當實際賦值的長度等於定義的長度時,列印亂碼。

③對於沒有填滿的字元陣列,列印陣列的長度

例子:

//test printf with %s
void test04() {
  char str1[3] = "we";
  char str2[2] = {'g', '0'};
  char str3[4] = {'w', 'e'};

  printf("str1 = %s\n", str1);
  printf("str2 = %s\n", str2);
  printf("str3 = %s\n", str3);
}

結果:

str1 = we

str2 = g0燙燙燙燙燙we

str3 = we