我想了解 putchar('0' + r);
是如何工作的。下面,该函数接受一个整数并将其转换为二进制。
void to_binary(unsigned long n)
{
int r;
r = n % 2;
if (n >= 2)
to_binary(n / 2);
putchar('0' + r);
}
我用谷歌搜索 putchar 的定义但我没有找到这个。为了测试它,我添加了一个 printf 来查看 r 的值:
void to_binary(unsigned long n)
{
int r;
r = n % 2;
if (n >= 2)
to_binary(n / 2);
printf("r = %d and putchar printed ", r);
putchar('0' + r);
printf("\n");
}
然后我运行它(输入 5)并得到以下输出:
r = 1 and putchar printed 1
r = 0 and putchar printed 0
r = 1 and putchar printed 1
所以我假设 putchar('0' + r);
在 r=0 时打印 0,否则在 r=1 时打印 1,或者发生其他情况?
最佳答案
在 C 中,'0' + digit
是一种将一位整数转换为其字符表示形式(如 ASCII 或 EBCDIC)的廉价方法。例如,如果您使用 ASCII
,可以将其视为将 0x30 ('0'
) 添加到一个数字。
一个假设是字符编码有一个连续的数字区域 - 这对 ASCII 和 EBCDIC 都适用。
正如评论中所指出的,此属性是 C++ 和 C 标准所必需的。 C 标准说:
5.2.1 - 3
In both the source and execution basic character sets, the value of each character after 0 in the above list of decimal digits shall be one greater than the value of the previous.
关于c - 什么是 putchar ('0' + num);做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255038/