我想将十进制数转换为16位二进制数 我的代码根本不起作用,但我确信我做了正确的步骤 希望得到一些帮助。
#include <stdio.h>
#include <stdlib.h>
const int BIT = 16;
char binaer(int i) {
char str[BIT];
int j = 0;
if(0 <= i && i <= 65535) {
for(int j = 0; j < BIT + 1; j++) {
if (i % 2 == 0) {
str[j] = '0';
} else {
str[j] = '1';
}
i = i / 2;
}
}
for(int x = BIT - 1; x >= 0; x--){
printf("%c", str[x]);
}
}
int main() {
int value;
scanf("%d", &value);
binaer(value);
return 0;
}
Input: 16
Output: 00001000000000000
答案 0 :(得分:1)
首先,main()
中的循环毫无意义。调用该函数一次就完成了。
str
是一个16元素char
数组,其元素可以通过索引0
访问15
。您访问了导致未定义行为的16
。
%s
中的 printf
期望一个空终止的char
数组。你没有提供。这又是未定义的行为。
该功能不会返回任何内容。返回类型void
。
正在反复打印二进制表单。确保这是你想要的。你应该反过来打印数组。完成for
循环后,您将打印它。
for(int in = BIT-1; in >= 0; in--){
printf("%c",str[in]);
}
printf("\n");
我打印它的方式,如果遵循,则不需要空终止符。