char数据类型中的撇号

时间:2014-10-06 13:48:55

标签: c arrays char structure apostrophe

char c; 
c = '2';
printf("%d\n",c);

所以这个问题来自我的测验,它询问什么是显示。答案是50,我尝试使用程序,但为什么它是50?不是2或其他什么?

2 个答案:

答案 0 :(得分:4)

撇号表示“字符文字”,即'2'不是整数2,而是字符2,即用于表示单个数字2的字形。

您使用%d中的printf()打印此值,这意味着“有符号整数”,因此您可以获得字符的整数值,通常称为“代码点”(或者,通常称为“代码点”) “ASCII值”)。

我认为您的代码不是100%干净,因为char可能是unsigned,您应该在调用中强制转换为(int),因为int%d {{1}}期望的是什么。

答案 1 :(得分:3)

您正在打印char '2'作为int '%d',因此打印的是ASCII value