首页 > 解决方案 > 为什么没有终止条件的'for'循环永远一遍又一遍地打印值'0'?

问题描述

没有 if 语句是一个无限循环,将 0 打印到无限数。为什么添加 if 语句会一次又一次地打印 0 和 0 if ?

for (int zz=0; ;zz++ ) {    //with the if statement 
if(zz==0)System.out.print(zz+"zz \n");
//System.out.print("....");

}

for (int zz=0; ;zz++ ) {    //without if statement.
System.out.print(zz+"zz \n");
}

标签: loopsfor-loopif-statementboolean

解决方案


你没有提到语言,但你的变量zz没有无限范围(没有任何类型的变量)。因此,一旦它计数超过其最高可表示值,它(可能,取决于语言以及它是否会导致某种溢出异常)将“包装”到它的最低值,这将是一个非常负数,因为你的变量已签署。然后它会继续计数,直到它0再次到达,它会打印。在您的代码中,它将永远继续这样做。您肯定注意到它打印零的速度比“没有 if 语句”版本打印它的数字慢得多吗?那是因为很少zz持有价值;0例如,每 40 亿次迭代一次。


推荐阅读