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

标签 c putchar

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

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/

相关文章:

c - getchar() 和 putchar()

C getchar() 和 putchar()

c - 小费计算——将一个数字换成小数表示

c - 如何将字符串转换为c中的命令?

不使用算术运算从二进制转换为十进制

c - C 中的 3 位数字生成器

c - 寻求有关安装和使用mips-gcc交叉编译器以生成自定义ASM的帮助

c - 用 c 中的两个数组对 n 的所有值进行插值的最佳方法是什么?

c - ANSI C - 不使用数组替换空白字符

c - 如何在 C 中检查 stdin == stdout