0

我一直在调试这个函数,但我不知道为什么当我向函数发送 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;
}

感谢你们。

4

1 回答 1

0
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;
}
于 2013-05-10T20:31:28.897 回答