2012-06-08 40 views
2

根據K & R C部分1.6,char是一種整數。那麼爲什麼我們需要%c。爲什麼我們不能使用%d爲什麼在C中使用%c?

+0

char是一個8位整數 –

+1

@MaziarBouali不一定。 – Pubby

+0

'printf'需要知道參數的大小以便打印它(適當地轉換它,這樣說)。一個'char'的大小爲1,'int'至少在大多數機器上更多。另外,使用'%c'時,你想要打印一個字符,而不是一個數字。 在'D'語言中,您總是會使用'%s',讓編譯器擔心類型。 – Matej

回答

22

因爲%d將打印char的數字字符的代碼:

printf("%d", 'a'); 

打印97(一個ASCII系統上),而

printf("%c", 'a'); 

打印a

+1

不要忘記'scanf':'%d'讀取並轉換數字字符串,其中'%c'讀取和轉換單個字符。 –

1

粗略地說,%c打印字符的ASCII表示形式。 %d輸出其十進制值。

+2

除非它不是ASCII – Pubby

4

雖然它是一個整數,但%c將其數值解釋爲顯示的字符值。例如,對於字符a

如果使用%d你會得到一個整數,例如,97字符的內部表示使用%c顯示字符a

VS

'a'本身(如果使用ASCII)

即,這是一個內部表示形式 vs(例如printf

1

如果您使用%c,您將打印(或掃描)字符或字符。如果您使用%d,您將打印(或掃描)一個整數。

printf("%d", 0x70); 

機器將如何知道您要輸出一個字符,而不是其相應的ASCII值?

-1

%d認爲字符是32位並打印它像一個整數,但%c轉換字符的int值爲ASCII字符然後打印它。

-1

%d是用來打印decimal(integer)數量,同時%c用來打印character。如果你嘗試打印字符與%d格式的計算機將打印字符的ASCII代碼。