2

我试图理解为什么以下语句有效:

putchar( 1 + '0' );

似乎 + '0' 表达式将文字转换为 putchar 喜欢给出的相应 ASCII 版本(在这种特殊情况下为 49)。

我的问题是它为什么这样做?任何帮助表示赞赏。如果我做出任何不正确的假设,我也深表歉意。

4

2 回答 2

2

这与 ASCII 无关。甚至没有人提到ASCII。

'0'这段代码的假设是,在系统的字符编码中,所有数字都显示为从到的连续范围'9',因此如果向字符添加偏移量'0',则会得到对应数字的字符。

C 或 C++ 编译器可能使用的所有字符编码都必须具有此属性(例如 C++ 中的 2.3/3),因此此代码是可移植的。

于 2012-01-22T06:06:24.177 回答
0

字符'0''9'连续的。C 标准保证了这一点。

在 ASCII 中:

  • '0'= 48
  • '1'= 49
  • '2'= 50

等等

'0'简单地视为一个偏移量。

  • '0' + 0 = 48,即'0'
  • '0' + 1 = 49,即'1'

等等

于 2012-01-22T06:07:51.047 回答