无限while循环和for循环之间有什么区别?

Joh*_*ohn 6 c++ loops for-loop while-loop

我看到了我读过的许多书中使用的不同约定,你可以在其中创建具有循环结构的无限循环,例如:

while()
   foo();
for(;;)
   foo();
Run Code Online (Sandbox Code Playgroud)

但实际上,我应该知道的差异是什么?哪一个更好?

Nul*_*0rm 7

它们在语义上是等价的.(x;y;z) { foo; }相当于x; while (y) { foo; z; }.它们在标准的其他版本中并不完全等效,在示例中for (int x = 0; y; z),范围x是for block并且在循环结束后超出范围,而int x; while (y) x在循环结束后仍然在范围内.

另一个区别是for将缺失解释y为TRUE,而while必须提供表达式.for (;;) { foo; }很好,但while() { foo; }不是.

  • 如果你想绕过语句`x`的位置,你可能会说'for(x; y; z){foo; }`相当于`{x; 而(y){foo; Z者除外; }. (3认同)
  • 仅供参考,问题是询问无限循环,而不是一般的 for 与 while 的语义。 (2认同)