在C中将putchar的十进制文字转换为ASCII等价

时间:2012-01-22 06:03:08

标签: c putchar

我试图理解为什么以下陈述有效:

putchar( 1 + '0' );

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

在ASCII中:

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

'0'只是一种偏移。

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