# include <stdio.h>
int printf(const char *format, ...);
# include <stdio.h> int main(void) { printf("Hello World!n"); // n表示換行 return 0; }其中
n
表示換行的意思。它是一個跳脫字元,前面在講字元常數的時候見過。其中 n 是“new line”的縮寫,即“新的一行”。# include <stdio.h> int main(void) { int i = 10; printf("%dn", i); /*%d是輸出控制符,d 表示十進位制,後面的 i 是輸出引數*/ return 0; }這句話的意思是將變數 i 以十進位制輸出。
%x
就是以十六進位制的形式輸出,要是%o
就是以八進位制的形式輸出,大家自己試一下。
# include <stdio.h> int main(void) { int i = 10; int j = 3; printf("%d %dn", i, j); return 0; }輸出控制符 1 對應的是輸出引數 1,輸出控制符 2 對應的是輸出引數 2……編譯、連結、執行後我們看一下輸出結果:
n
外,所有其餘的普通字元全部都原樣輸出。比如:
# include <stdio.h> int main(void) { int i = 10; int j = 3; printf("i = %d, j = %dn", i, j); return 0; }這時我們再編譯、連結、執行一下:
i=
、,
、空格和j=
全都原樣輸出了。此外需要注意的是:“輸出控制符”和“輸出引數”無論在“順序上”還是在“個數上”一定要一一對應。%
開頭的基本上都是輸出控制符。
控制符 | 說明 |
---|---|
%d | 按十進位制整型資料的實際長度輸出。 |
%ld | 輸出長整型資料。 |
%md | m 為指定的輸出欄位的寬度。如果資料的位數小於 m,則左端補以空格,若大於 m,則按實際位數輸出。 |
%u | 輸出無符號整型(unsigned)。輸出無符號整型時也可以用 %d,這時是將無符號轉換成有符號數,然後輸出。但程式設計的時候最好不要這麼寫,因為這樣要進行一次轉換,使 CPU 多做一次無用功。 |
%c | 用來輸出一個字元。 |
%f | 用來輸出實數,包括單精度和雙精度,以小數形式輸出。不指定欄位寬度,由系統自動指定,整數部分全部輸出,小數部分輸出 6 位,超過 6 位的四捨五入。 |
%.mf | 輸出實數時小數點後保留 m 位,注意 m 前面有個點。 |
%o | 以八進位制整數形式輸出,這個就用得很少了,了解一下就行了。 |
%s | 用來輸出字串。用 %s 輸出字串同前面直接輸出字串是一樣的。但是此時要先定義字元陣列或字元指標儲存或指向字串,這個稍後再講。 |
%x(或 %X 或 %#x 或 %#X) | 以十六進位制形式輸出整數,這個很重要。 |
# include <stdio.h> int main(void) { int i = 47; printf("%xn", i); printf("%Xn", i); printf("%#xn", i); printf("%#Xn", i); return 0; }在 VC++ 6.0 中的輸出結果:
x
,輸出的字母就是小寫的;如果是大寫的X
,輸出的字母就是大寫的;如果加一個#
,就以標準的十六進位制形式輸出。#
,否則如果輸出的十六進位制數正好沒有字母的話會誤認為是一個十進位制數呢!總之,不加#
容易造成誤解。但是如果輸出 0x2f 或 0x2F,那麼人家一看就知道是十六進位制。而且%#x
和%#X
中,筆者覺得大寫的比較好,因為大寫是絕對標準的十六進位制寫法。
%d
,跳脫字元前面有反斜槓
,還有雙引號。那麼大家有沒有想過這樣一個問題:怎樣將這三個符號通過 printf 輸出到螢幕上呢?%d
只需在前面再加上一個%
,要輸出
只需在前面再加上一個
,要輸出雙引號也只需在前面加上一個
即可。程式如下:
# include <stdio.h> int main(void) { printf("%%dn"); printf("n"); printf("""n"); return 0; }在 VC++ 6.0 中的輸出結果是: