loops - 为什么没有终止条件的'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");
}
解决方案
你没有提到语言,但你的变量zz
没有无限范围(没有任何类型的变量)。因此,一旦它计数超过其最高可表示值,它(可能,取决于语言以及它是否会导致某种溢出异常)将“包装”到它的最低值,这将是一个非常负数,因为你的变量已签署。然后它会继续计数,直到它0
再次到达,它会打印。在您的代码中,它将永远继续这样做。您肯定注意到它打印零的速度比“没有 if 语句”版本打印它的数字慢得多吗?那是因为很少zz
持有价值;0
例如,每 40 亿次迭代一次。
推荐阅读
- c# - 如何修复实例化 Excel.Application 对象时随机发生的 Excel.Application 错误
- c# - 如何从此 json 对象中获取值?
- scala - Spark Dataframe - 如何操作具有嵌套结构的行?
- mysql - MySQL 8 InnoDB 32KB 和 64KB 页面大小对 HDD 的好处
- sql - 模式匹配在 SQL 中,字符出现在任何地方但按顺序排列
- java - 使用 selenium java 在 IE 浏览器上运行的应用程序中的模态对话框未识别
- ios - ViewController 背景颜色不会改变
- scala - git变量是什么轴?
- rxjs - RxJs - 我可以使用 BehaviorSubject 创建计时器吗?
- r - 提高 data.table 子集性能