为什么此循环(达到10亿个)只需要少量声音即可执行...

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

}

...但是这个循环(到100亿)需要10分钟以上的时间?
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,但这似乎没问题)会发生什么?

09-05 06:38