我正在尝试将用户输入的整数转换为二进制形式,但我不断收到警告,指出“二进制”在最后一个 printf 语句中未初始化。
#include <stdio.h>
int main(void)
{
long int integer, binary;
printf("Enter an integer: \n");
scanf("%ld", &integer);
while(integer != 0)
{
binary = integer % 2;
integer = integer / 2;
}
printf("The integer in binary is %ld", binary);
return 0;
}
最佳答案
欢迎来到 Stack Overflow。
值binary
是在while
循环期间设置的,但是如果您实际上为整数输入零,会发生什么?在这种情况下,循环不会运行,并且值 binary
没有初始化值。惊喜!
这就是它提示的原因。
但是,即使您输入非零值,您使用的算法也只会为 binary
提供您要转换的数字中最低位的值,因此您需要不同的代码使其能够在运行整数时构建二进制值。
基本上,您想要做的是将二进制值转换为二进制的十进制表示形式,这有足够的限制,我不确定它是否值得这样做。
仍然:
long int binary = 0;
while (integer != 0)
{
binary += integer % 2; // 1 or 0
binary *= 10; // a "binary" decimal shift left
integer /= 2;
}
printf("Integer in binary is %ld", binary);
return 0;
}
这可行,但它有一个严重的限制,即只能表示相对较小的二进制值。
人们解决此练习的最常见方法是将整数值转换为字符串而不是整数,以便于显示。
我想知道这是否是您想要解决的问题?
关于c - 如何在C中将整数转换为二进制形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58634957/