首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这是一个输出二进制的程序,为什么最后putchar('0' + r)语句中去掉‘0’+后,只写为putchar(r)程序就不行了呢?该怎么解决

2012-09-11 
这是一个输出二进制的程序,为什么最后putchar(0 + r)语句中去掉‘0’+后,只写为putchar(r)程序就不行了呢?

这是一个输出二进制的程序,为什么最后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)也行。
[解决办法]

探讨
putchar('0' + r)的意思是把r转换为数字字符,而putchar(r)只是把r当成ASCII码打印,ASCII码0和1打印出来是看不懂的符号。

[解决办法]
探讨

引用:
putchar是输出字符,r是int,当然不行啊!当r=0是,它输出的其实是ascii码中的第一个。
写成putchar(r+48)也行。

为什么加48可以啊

热点排行