【发布时间】:2019-09-28 12:53:23
【问题描述】:
我的代码在 1024 之前都可以正常工作,但是大于 1024 的值会给出错误的输出,请帮助:
#include<stdio.h>
int main()
{
int dec,i=1;
int rem=0;
long long int result=0;
scanf("%d",&dec);
while(dec!=0)
{
rem=dec%2;
result = result +rem*i;
dec=dec/2;
i=i*10;
}
printf("%I64u",result);
return 0;
}
【问题讨论】:
-
请不要将您的十进制到二进制转换器编写成将其输出存储在
int中。它不仅人为地限制了您可以转换的数字范围,而且毫无意义。请编写您的转换器以将其输出存储为 string。这样会好很多。 -
1024 对于 int 来说太大了。 1024=0b10000000000。现在您正尝试在 long long 中存储 10000000000。这没关系,但您使用 int 变量进行计算。
-
从编程语言的角度来看,二进制和十进制都是文本格式。变量
dec不是十进制的。这只是一个值。该代码使用scanf将控制台中的文本翻译为数值。将该值转换为二进制(或任何其他)文本表示的函数应该以文本的形式产生结果。
标签: c++ c error-handling