c++函数中出现异常

exception occured in C++ function

本文关键字:异常 函数 c++      更新时间:2023-10-16

当给定数字"n"及其基数"D"时,使用下面的函数计算其在基数D下的反转数,然后转换为十进制并返回。

问题是,方法1可以成功地工作,而方法2总是出现异常。有人能告诉我方法二有什么问题吗?非常感谢。

int getrevn(int n, int D)
{
//-------method 1-------------------------//
    int revn = 0;
    while (n)
    {
        revn = revn * D + n % D;
        n /= D;
    }
    return revn;
//------method 2-------------------------//
    string s;
    while (n)
    {
        s = char(n % D + '0') + s;
        n /= D;
    }
    int rev = 0;
    for (unsigned int i = s.size() - 1; i >= 0; i--)
        rev = rev * D + s[i] - '0';
    return rev;
}

在最后一个循环中,您将i声明为unsigned。因此,i将始终是>= 0,并且循环不会终止。

相反,i将绕到一个非常大的数字,这将导致崩溃。只需将i更改为signed