基数 10 の数値を基数 n の数値 (n は最大 10) に変換できるアルゴリズムを作成しようとしています。しかし、いくつかの奇妙な理由により、C の次のアルゴリズムは各基数の特定の臨界点で失敗します。たとえば、基数 2 および基数 3 の変換では、それぞれ 1023 および 52,487 までのすべての数値が機能しますが、それを超える数値は奇妙な負の結果を生成します。なぜこれが起こっているのかわかりません。誰でも私を助けることができますか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int returnint;
int baseconvert(int number,int base) {
if(number == 0 || base == 10) {
return returnint;
}
returnint = (number % base) + (10 * baseconvert(number / base, base));
return returnint;
}
int main() {
fprintf(stdout,"%d\n",baseconvert(1023,2));
fprintf(stdout,"%d\n",baseconvert(52487,3));
}
編集:
上記の print ステートメントの出力結果は次のとおりです。
1410065408
-2094967296