gpt4 book ai didi

c - 一个将16位正数转换为二进制的程序

转载 作者:行者123 更新时间:2023-11-30 19:59:30 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,如果 a % 2^j = 0 则打印 1 ,否则打印 0 所以最后我得到一个 16 位二进制代码。但我没有收到任何错误,并且在我输入输入数字后(a)终端崩溃。感谢您的帮助。

#include <math.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
uint16_t a, j, b, mod;
printf(" Please insert a number between 0 and 65535 \n ");
scanf("%d", &a);

j = 16;
while (j > 0)
;
{
b = pow(j, 2);
mod = a % b;
if (mod == 0) {
printf("%d", 1);
} else {
printf("%d", 0);
}
j = j - 1;
}

return 0;
}

最佳答案

您有undefined behavior当您使用 scanf%d 格式时。此格式说明符期望参数是指向 int 的指针。

格式说明符和参数类型不匹配会导致 UB。

对于uint16_t,使用宏SCNu16(如 this reference 中所述):

scanf("%" SCNu16, &a);

关于c - 一个将16位正数转换为二进制的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58806983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com