十进制数转换为16位二进制(C)

时间:2018-01-13 17:34:26

标签: c binary bit

我想将十进制数转换为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

1 个答案:

答案 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");

我打印它的方式,如果遵循,则不需要空终止符。