For 循环是如何工作的,特别是对于(; ;) ?

在浏览一些旧的公司代码时,我偶然发现了一个 for 循环,它看起来像这样:

for (;;) {
//Some stuff
}

我试过谷歌,但找不到任何答案。我是在编程课上睡着了,还是这是一个不寻常的循环?

52214 次浏览

这与:

while(true) {
//Some Stuff
}

基本上就是无限循环的替代语法。

这个循环没有保护,充当 while (true)循环。它将无限循环直到中断。

这是个无限循环。初始化、条件和增量语句都是可选的,因此如果没有其中任何一个,这个语句总是会再次循环(除非中断或其他构造与之交互)。

虽然我对 Java 不是很确定,但是 这个问题解释了如何在。净你的空 for和一个 while (true)将被编译为完全相同的事情。如果 Java 也能做到这一点,我不会感到惊讶。

这是个无限循环。不完全是好的代码,因为它不是直观的,实际上是编译或不抛出运行时错误。将其重写为 while(true) { /* code */ }将更易于理解,以表明存在无限循环。

Java 中的 for循环具有以下结构-

for (initialization statement; condition check; update)
loop body;

正如你所看到的,这里有四个陈述-

  1. 初始化语句: 此语句仅在第一次输入循环时执行一次。这是一个可选的语句,意味着您可以选择保持该字段为空。它通常用于某种初始化目的。
  2. 条件检查: 这个语句可能是最重要的一个。它检查某个表达式的计算结果是否为 true。如果是,则继续执行循环。您可以选择保持该字段为空,该字段的计算结果为 true
  3. 更新: 此语句列表从左到右执行,通常用于增加/减少某个变量。
  4. Loop body: 循环的主体,它将根据条件检查的真值一次又一次地执行。

基本上这就是执行的方式——首先,当第一次输入循环时,执行一次初始化语句。然后执行条件检查,看它是否计算为真。如果是,则执行循环体,否则完成循环执行。然后,执行 Update 语句。接下来,再次执行条件检查,如果计算结果为 true,那么再次执行循环体,然后执行 update 语句,然后再次执行条件检查... ... 就得到了图片。

现在介绍 for( ; ; )语法。它没有初始化语句,因此不执行任何操作。它的条件检查语句也是空的,这意味着在执行循环体之后它的计算结果为 true。接下来,由于 update 语句为空,因此不执行任何操作。然后再次执行条件检查,它将再次计算为真,然后整个过程将再次重复。

所以,你看,这基本上是一个无限循环,它没有初始化语句,它的条件检查总是计算为真,它没有更新语句。这相当于

while(true)
{
.....
}

这是 Java 中另一个流行的循环结构。

当您使用这样的无限循环时,重要的是要注意中断条件,因为在大多数情况下,您不能让循环无限期地运行。要打破这种循环,可以使用 break语句。结构如下-

if(some_condition_is_true)
break;        // This will cause execution to break out of its nearest loop

或者

if(some_condition_is_false)
break;

这些都是无限循环

for(;;) {
// endlessly
}


while(true) {
// endlessly
}


do {
// endlessly
} while(true);