我必须把一个字母转换成二进制数字。所有的工作,但有一个问题-我不明白为什么在我的二进制数字后,它仍然打印一些其他的数字...谁能帮帮忙,好吗?
这是我的代码,先谢谢你了!
#include <stdio.h>
#include <stdbool.h>
void convert(const char char, bool bits[8]) {
char c = char;
for (int j = 7; j+1 > 0; j--){
if(c>=(1<<j)){
c=c-(1<<j);
printf("1");
}else{
printf("0");
}
}
//here start to prints other numbers
printf("\n");
printf("\n");
}
int main(){
bool bits1[8];
encode_char('A', bits1);
for(int i = 0; i < 8; i++)
{
printf("%d", bits1[i]);
}
printf("\n");
return0;
}
1条答案
按热度按时间tp5buhyn1#
有3个问题会使您的示例代码无法编译:
1.您试图将函数的第一个参数声明为
const char char
,但char
是一个类型,不是有效的变量名。1.您尝试在main中调用
encode_char
,但您定义了convert
return0
应该是return 0
修复这些错误后,垃圾值仍然会有问题。因为即使你传递了
bits
,函数也不会对它做任何事情(所以它仍然是垃圾值)。所以你的printf("%d", bits1[i]);
将只是一堆“随机”数字。多余的数字不是来自你用//here...
标记的数字。下面是一个为
bits
指定有用值的示例: