【问题标题】:Apostrophe in char data typechar 数据类型中的撇号
【发布时间】:2014-10-06 13:48:54
【问题描述】:
char c; 
c = '2';
printf("%d\n",c);

所以这个问题来自我的测验,它询问显示器是什么。答案是50,我用程序试过了,为什么是50?不是 2 什么的?

【问题讨论】:

  • 您的系统(像今天的大多数系统一样)似乎正在使用the ASCII character set。如果您检查链接,您可能会明白为什么'2' == 50
  • 另外,今后请尝试为您的问题提供更好的标题。这个问题与撇号无关。

标签: c arrays char structure apostrophe


【解决方案1】:

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

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

我认为你的代码不是 100% 干净的,因为 char 可能是 unsigned,你应该在调用中转换为 (int) 以明确,因为 int%d 所期望的。

【讨论】:

    【解决方案2】:

    您正在打印char '2',作为int '%d',所以打印出来的是它的ASCII value

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      相关资源
      最近更新 更多