私はCで "累乗法による累乗"アルゴリズムを実装しようとしましたが、私のプログラムは奇妙な動作をします。私は関数を呼び出す場合C二乗法による累乗の実装
long long fast_power_1(long long base, long long power){
long long result = 1;
while (power > 0)
{
if (power % 2 == 0)
{
power = power/2;
base = base * base;
}
else
{
power = power - 1;
result = (result*base);
power = power/2;
base = (base * base);
}
}
return result;}
:まず、ここに小さなコードスニペットです
printf("%d\n",fast_power_1(2,100));
私は出力が976371285のようなものであることを期待していますが、結果は0であると私はしないでください理由をよく理解している。
Fyi、 '%d'は' long long'の正しい書式指定子ではありません。ドキュメントを参照してください。 – WhozCraig
長いlongが64ビットの場合は、 '2 ** 100'もlong longに収まりません。 –
'long long'は100ビットを持つ可能性は低いです。 –