为什么以下循环被认为是无限循环?
for(int i=0;;i++)
{
//
}
在i
达到其最大值 2147483647 之后,然后当它递增时,程序应显示错误,指出“整数过大”或类似的情况。因此,程序应该终止。尽管达到该值需要一些时间,但它肯定不是无限的。那为什么它是无限循环?
答案 0 :(得分:6)
这个答案适用于Java。自从我在C#或C ++工作以来已经有一段时间了。
不,当整数增加超过其最大值时,它会溢出到其最小值。在这种情况下没有异常抛出,所以循环可以永远继续,因为没有条件来结束循环(除非在循环体内有一些break语句)。 / p>
答案 1 :(得分:2)
当你的整数达到上边缘时,加1会使它达到最低值。
事实上,这不是无限的
for(int i=0;i>=0;i++);
它运行时间Integer.MAX_VALUE
次,因为Integer.MAX_VALUE
+ 1是Integer.MIN_VALUE
,负数
答案 2 :(得分:1)
因为你没有写任何条件,语言将它定义为无限循环。
避免溢出。
试试这些:
C ++:
#include <limits.h>
for(int i=0;;i++)
{
//
if(i == INT_MAX) break;
}
爪哇:
for(int i=0;;i++)
{
//
if(i == Integer.MAX_VALUE) break;
}
答案 3 :(得分:1)
i
传递Integer.MAX_VALUE
的值后,它会溢出到Integer.MIN_VALUE
。由于您没有为循环定义条件,永远不会破坏。所以为了打破它,要么
break;
指令。答案 4 :(得分:1)
当int达到其最大值并再增加一个时,它将变为最小值而不是给出任何错误。
答案 5 :(得分:0)
(对于java)这个循环被认为是一个无限循环:
for(int i=0;;i++)
{
//
}
因为它没有以下条件:
for(int i=0;i< number;i++)
{
//
}
此条件i< number
为true
时,循环继续: