这是一个输出二进制的程序,为什么最后putchar('0' + r)语句中去掉‘0’+后,只写为putchar(r)程序就不行了呢?
/* binary.c -- prints integer in binary form */
#include <stdio.h>
void to_binary(unsigned long n);
int main(void)
{
unsigned long number;
printf("Enter an integer (q to quit):\n");
while (scanf("%ul", &number) == 1)
{
printf("Binary equivalent: ");
to_binary(number);
putchar('\n');
printf("Enter an integer (q to quit):\n");
}
printf("Done.\n");
return 0;
}
void to_binary(unsigned long n) /* recursive function */
{
int r;
r = n % 2;
if (n >= 2)
to_binary(n / 2);
putchar('0' + r);
return;
}
[解决办法]
'0' + r实际上是在计算ascii码
[解决办法]
putchar是输出字符,r是int,当然不行啊!当r=0是,它输出的其实是ascii码中的第一个。
写成putchar(r+48)也行。
[解决办法]
[解决办法]