Binary dec到bin的错误

Binary dec到bin的错误,binary,decimal,Binary,Decimal,我一直在调试这个函数,但我不知道为什么当我向函数发送4时它会抛出99。 这是一个将十进制转换为二进制的函数。 实际上,我试着在每一步计算exp,res和其他变量,然后将它们相乘,但我不知道。这没有道理 int DecToBinary(long num) { if(num == 0) { return 0; } else if(num == 1) { return 1; } int exp = 0; int res =

我一直在调试这个函数,但我不知道为什么当我向函数发送4时它会抛出99。 这是一个将十进制转换为二进制的函数。 实际上,我试着在每一步计算exp,res和其他变量,然后将它们相乘,但我不知道。这没有道理

int DecToBinary(long num) {
    if(num == 0) {
        return 0;
    }
    else if(num == 1) {
        return 1;
    }
    int exp = 0;
    int res = 0;
    for (; num != 0; exp++){
        res = res+num%2*pow(10,exp);
        num = num/2;
    }
    return res;
}
谢谢你们

if(num == 0) {
    return 0;
}
else if(num == 0) {
    return 1;
}
你知道第二个分支永远不会被执行,对吗

此外:

pow(10,exp);
这将产生一个浮点数。为舍入误差做好准备。更好的方法是:根本不要使用
pow()
(处理整数不需要浮点数)。简单地一步一步地除法,将结果累加到一个变量中

int dec2bin(int n)
{
    int r = 0, tp = 1;
    while (n) {
        r += (n % 2) * tp;
        n >>= 1;
        tp *= 10;
    }
    return r;
}

如果(num==0)或者如果(num==0)是打字错误吗?是的。我最近编辑了我的帖子。但是我没有使用exp()。谢谢大家!@用户2327884不管怎样,您使用的是
pow()
,这就是我的意思。数学函数返回double和float,这是错误的。哦,我不知道。谢谢。@user2327884“我不知道”-在使用函数之前一定要阅读它的文档。从手册页可以清楚地看到,
pow()
返回
double