寻觅者6 发表于 2016-09-14 09:13

用getchar输入,打印的二进制为什么会多2个1

小弟写了一个把输入的字符型整数转化成二进制显示的程序,不知什么问题,用getchar得到的总是多2个1。望请大神们前来指出错误来:mrgreen:。
#include<stdio.h>
#include<stdlib.h>

int print_2b(char a)
{
   unsigned char b = 0x80;

   while( b > 0)
   {
      putchar(a & b ? '1' : '0' );
      b >>=1;
   }
      puts("\n");
}
int main()
{
   print_2b(getchar());
    return 0;
}
file:///C:/Users/lenovo/AppData/Local/YNote/data/qqEC40F61F6498141C01FB27C32DDB73C7/6e95442ee9494c5f9c491b57916876d6/4d46840cdede487dadcf5f3d229efb17.jpg
file:///C:/Users/lenovo/AppData/Local/YNote/data/qqEC40F61F6498141C01FB27C32DDB73C7/6e95442ee9494c5f9c491b57916876d6/4d46840cdede487dadcf5f3d229efb17.jpgfile:///C:/Users/lenovo/AppData/Local/YNote/data/qqEC40F61F6498141C01FB27C32DDB73C7/6e95442ee9494c5f9c491b57916876d6/4d46840cdede487dadcf5f3d229efb17.jpgfile:///C:/Users/lenovo/AppData/Local/YNote/data/qqEC40F61F6498141C01FB27C32DDB73C7/6e95442ee9494c5f9c491b57916876d6/4d46840cdede487dadcf5f3d229efb17.jpg

hellioncu 发表于 2016-09-14 09:37

因为getchar得到的1实际是字符1,ascii码是0x31
页: [1]
查看完整版本: 用getchar输入,打印的二进制为什么会多2个1