2014-10-06 90 views
-4
char c; 
c = '2'; 
printf("%d\n",c); 

所以這個問題是從我的測驗,它是問什麼是顯示。答案是50,我嘗試了使用程序,但爲什麼它是50?不是2還是什麼?在char數據類型中的撇號

+1

看來你的系統(像今天的大多數系統)正在使用[ASCII字符集](http://www.ascii-code.com/)。如果你檢查鏈接,你可能會明白爲什麼'2'== 50'。 – 2014-10-06 13:53:26

+2

此外,請嘗試在未來爲您的問題提出更好的標題。這個問題與撇號無關。 – 2014-10-06 13:55:03

回答

4

撇號的意思是「字符常量」,即'2'不是整數2,而是字符2,即使用的字形來表示單個數字2

您打印printf()使用%d這個值,這意味着「有符號整數」,讓您得到字符的整數值,通常被稱爲「碼點」(或者,經典,它是「ASCII值」)。

我覺得你的代碼是不是100%乾淨,因爲char可能是unsigned,你應該轉換爲(int)在調用清楚,因爲int是什麼%d期待。

3

您打印char '2',作爲int '%d',還等什麼會打印,是其ASCII value