c++ - 输入 1024 后十进制到二进制转换的错误输出?

标签 c++ c error-handling

我的代码在 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;
}

最佳答案

代码应该将二进制值累加到一个字符串中。由于这是交叉发布到 C 和 C++,我想 C 解决方案是合适的(在 C++ 中我会使用 std::string,并且簿记会稍微简单一些):

#include<stdio.h>

int main()
{
int rem=0;
char result[sizeof(long long)*CHAR_BITS+1];
int dec,i=sizeof(result);
result[--i] = '\0';

scanf("%d",&dec);
while(dec!=0)
{
    rem=dec%2;
    result[--i] = rem + '0';
    dec=dec/2;
}
printf("%s",result + i);

return 0;

(注意:未测试)

关于c++ - 输入 1024 后十进制到二进制转换的错误输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58146515/

相关文章:

c - 两种不同结果(即正面或负面)的数组问题

c - 如何在函数实现中使用函数的函数参数?

error-handling - django-rest-framework 自定义错误消息作为响应

c - 如何使用 C 缓冲低延迟输入并将其写入磁盘

ios - 不符合协议(protocol)错误

testing - 如何使用 webdriver 检查浏览器中的错误消息弹出窗口?

c++ - 不明白 sscanf() 函数是如何工作的

c++ - 电话号码列表

c++ - 直接渲染到 WASAPI 时,两个流之一没有音频输出

c++ - 计算 RotatedRect OpenCV 内白色像素的百分比