なぜ、このループ(10億まで)はわずかな音だけを実行するのですか?
for (i = 0; i < 1000000000; i++)
{
}
… but this loop (to 10 billion) takes >10 minutes?
for (i = 0; i < 10000000000; i++)
{
}
30秒ほどかかりませんか?(3秒x 10)?
ベストアンサー
私は i
は32ビットの整数変数で、常に100億(2 ^
32以上)未満であるのに対し、10億は32ビットの範囲に収まっています署名に応じて約2〜40億)。コンパイラがこの100億の定数をどのように昇進させるのかはわかりませんが、彼はオーバーフローの問題を認識しているように見え、それを無限ループにしています。
i
を long long int
(おそらく
10000000000
10000000000L
)にするとどうなりますか。問題ありません)?