【发布时间】:2018-10-05 11:27:02
【问题描述】:
作为练习,我尝试将输入的 char 值转换为二进制并显示 8 位输出的每一位。 我找到了一些转换示例代码:
int main (void)
{
char a =16;
int i=0;
for (i = 0; i < 8;i++) {
printf("%d", !!((a << i) & 0x80));}
return 0;
}
但是,当我将输入的值用于代码时:
int main(void){
char a;
printf("Enter char value:", a);
scanf("%c", &a);
printf("a=%c", a);
return 0 ;}
给出了不正确的值。 还有我如何能够分别显示每一位?例如
printf("The sign bit is %d\n", &);
printf("The bit 6 is %d\n", &);
printf("The bit 5 is %d\n", &);
printf("The bit 4 is %d\n", &);
printf("The bit 3 is %d\n", &);
printf("The bit 2 is %d\n", &);
printf("The bit 1 is %d\n", &);
printf("The bit 0 is %d\n", &);
【问题讨论】:
-
您想在这里使用
a发生什么?printf("Enter char value:", a); -
如果你用一个可识别的值初始化
a,那会被打印出来吗? -
scanf()的返回值是多少? -
你输入的是什么?
-
如果硬编码和作为输入输入产生不同的结果,您是否考虑过检查是否有任何异常行为而不是归咎于转换为二进制?