なぜ10億回以上をループするのはずっと時間がかかりますか?

なぜ、このループ(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億の定数をどのように昇進させるのかはわかりませんが、彼はオーバーフローの問題を認識しているように見え、それを無限ループにしています。

ilong long int (おそらく
10000000000 10000000000L
)にするとどうなりますか。問題ありません)?

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です