2010-05-10 62 views
0

請解釋一下下面這段代碼..查詢關於字符操作

printf("%c\n",0+'0'); --> returns 0 
    printf("%c\n",1+'0'); --> returns 1 
    printf("%c\n",0+'1'); --> returns 1 
    printf("%c\n",1+'1'); --> returns 2 

感謝名單。

+0

怎麼樣谷歌,維基百科,......之前你問這裏? – 2010-05-10 07:21:07

+3

@Holger:請指定一個僅使用上述代碼元素返回有用答案的Google查詢。 – 2010-05-10 07:22:18

+0

@Aaron:http://www.cplusplus.com/reference/clibrary/cstdio/printf/是第一個使用關鍵字printf的谷歌搜索引擎 – 2010-05-10 07:50:36

回答

3

看看ASCII table。 '0'有代碼48.所以'0'+ 1產生49,這是'1'。所以每個字符實際上是一個整數。你給它添加另一個整數,然後,因爲你在printf中指定了「%c」,所以你強制它把它看作一個字符。他檢查他的ASCII表格,經過一番考慮後,他決定將輸出打印到屏幕上。

1

'0'給出ASCII char 0的值,即48。要添加0以獲得48。然後,您打印48追溯到這給0

同樣下一個加14849,當打印爲焦炭提供了1

1

感謝%c個個打印字符等效參數的字符。

printf("%c\n",0+'0'); 

添加零到作爲48的字符零的ASCII值:48 + 0 = 48
嘗試printf("%d\n", '0');獲得的ASCII值。

printf("%c\n",1+'0'); // 1 + 48 = 49 which is the character `1` 
printf("%c\n",0+'1'); // 0 + 49 which is again `1` 
printf("%c\n",1+'1'); //left as an exercise 
+0

謝謝..這一個也是正確的:-) – AGeek 2010-05-10 07:53:47

+0

@RBA就像一個供參考,通常情況下,通過向答案左側按下向上箭頭,通過對答案進行提前投票來感謝他人。這會給他/她10個聲望點。 (我已經做了這個答案CW,以便我不會在這個答案上獲得任何代表;不想聲討乞求代表 - 只是想讓你知道這個習俗) – Amarghosh 2010-05-10 11:11:45