Jus*_*ini 32

这是一个无限循环,相当于while(true).如果未提供终止条件,则条件默认为true.

  • 之所以编写`for(;;)`而不是`while(true)`,是因为有些编译器会在`while(true)`中对常量布尔表达式发出警告.例如,Visual C++给我一个"警告C4127:条件表达式是常量"与`while(true)`. (11认同)
  • 但就功能而言,它完全相同. (3认同)
  • @In silico:如果你喜欢打高尔夫球的话,它也短了四个字符。 (2认同)
  • 我相信另一个原因是有些人认为它更具可读性. (2认同)

pax*_*blo 9

在C和C++(以及其他一些语言)中,for循环有三个部分:

  • 一个预循环部分,在循环开始之前执行;
  • 迭代条件部分,虽然为真,但将执行循环体; 和
  • 迭代后部分,在循环体的每次迭代之后执行.

例如:

for (i = 1, accum = 0; i <= 10; i++)
    accum += i;
Run Code Online (Sandbox Code Playgroud)

将从1到10的数字相加.

它大致相当于以下内容:

i = 1;
accum = 0;
while (i <= 10) {
    accum += i;
    i++;
}
Run Code Online (Sandbox Code Playgroud)

但是,没有任何要求for语句中的节实际上包含任何内容,如果迭代条件缺失,则假定为真.

所以for(;;)循环基本上只是意味着:

  • 不做任何循环设置;
  • 永远循环(尽管有休息,退货等等); 和
  • 不做任何迭代后处理.

换句话说,它是一个无限循环.


Ton*_*roy 6

循环直到一些break,exit,throw等内循环语句执行.基本上,您可以将for循环视为包含:

for (setup; test; advance)
    ...
Run Code Online (Sandbox Code Playgroud)

如果"test"为空,则认为是true,并且循环继续运行.空"设置"和"提前"根本不做任何事情.


小智 6

无限循环,一直持续到出现breakexit、 orgoto语句为止。