我试图理解为什么以下语句有效:
putchar( 1 + '0' );
似乎 + '0' 表达式将文字转换为 putchar 喜欢给出的相应 ASCII 版本(在本例中为 49)。
我的问题是它为什么要这样做?任何帮助表示赞赏。如果我做出了任何不正确的假设,我也深表歉意。
最佳答案
这与 ASCII 无关。甚至没有人提到 ASCII。
这段代码假设的是,在系统的字符编码中,所有数字都显示为从 '0'
到 '9'
的连续范围,因此如果您给字符'0'
加上一个偏移量,就得到对应数字的字符。
C 或 C++ 编译器可能使用的所有字符编码都必须具有此属性(例如 C++ 中的 2.3/3),因此此代码是可移植的。
关于将十进制文字转换为 C 中 putchar 的 ASCII 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8959359/