关于递归的问题
我没看懂第15行,'0' + 1 == '1'是什么意思?#include <stdio.h>
void binary(unsigned long n);
void binary(unsigned long n)
{
int r;
r = n % 2;
if (n >= 2)
{
binary(n / 2);
}
putchar('0' + r); // '0' + 1 == '1'
}
int main(void)
{
unsigned long number;
printf("请输入一个正整数:");
scanf("%lu", &number);
binary(number);
putchar('\n');
return 0;
} 百度ascii码,就是字面意思,字符1比字符0多个1 对于数字连续编码的编码系统中,int型转换为char型的一种方式。之所以转换,是因为用的是putchar(),不愿意的话,用printf以%d直接打印 r 也行 字符 '0' 的 ASCII 编码为 48 , '1' 的编码为 49
'0' + 1, 就是先把 '0' 转成编码形式, 即 48, 再加 1 得 49
此时就是 '1' 上面都解答了
我写个不同的代码
void binary(unsigned long n)
{
int r;
r = n &1;
if (n >= 2)
{
binary(n >>1);
}
putchar('0' + r); // '0' + 1 == '1'
}
页:
[1]