为什么需要花费这么长时间才能完成100亿到10亿?

5 c loops for-loop

为什么这个循环(到10亿)只需要几个声音来执行...

for (i = 0; i < 1000000000; i++)
{

}
Run Code Online (Sandbox Code Playgroud)

...但这个循环(达到100亿)需要> 10分钟?

for (i = 0; i < 10000000000; i++)
{

}
Run Code Online (Sandbox Code Playgroud)

它不应该只需要30秒左右(3秒x 10)?

Chr*_*ica 11

我猜i是一个32位整数变量因此总是小于100亿(大于2 ^ 32),而10亿仍然适合32位范围(最终约为2或40亿,取决于符号类型).虽然我不知道编译器如何推广这个100亿常量,但他似乎意识到溢出问题并使其成为一个有效循环.

你做i一个long long int(也许是10000000000a 10000000000L,但似乎没有问题)会发生什么?