"n"とその基数 "D"が指定された場合、その後に続く関数を使用して基数Dで逆数を計算し、Decimalに変換して返します。例外がC++関数で発生しました
問題は、方法1は成功裏に機能し、方法2は常に例外が発生することです。方法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;
}
どういう例外がありますか?それは重要なことです。 – Carcigenicate
メソッド2では 's'は宣言されましたが、初期化されていないので' + s'はできません。 –
@EliSadoff: 'string s;はどのように初期化されていませんか? – IInspectable