2

最近在阅读 c++ 教程时,我遇到了一个看起来像这样的 for 循环:

for (;;){
   //Do stuff
}

这是一个无限循环吗?我为什么要用这个而不是那个while(1)

4

3 回答 3

8

是的,它是无限的。传统上,编译器会在您使用时生成警告while(1),但在使用时不会for(;;)。我不知道现在是否仍然如此。

于 2013-04-16T22:39:43.150 回答
5

这是一个无限循环。更准确地说,如果 a 中的条件for为空,则认为它true。至于while ( true )vs. for (;;):历史上for (;;)是惯用的形式(由 Kernighan 和 Ritchie 使用),可能部分是因为早期的 C 没有布尔值。while ( 1 )在我工作过的任何地方,使用都不会通过代码审查。使用布尔值,while ( true )绝对看起来比 更直观for (;;),但while ( 1 )令人困惑。但是在布尔之前的时代,每个人都有一个#definefor trueor TRUEor some such,所以这是一个弱论点。最后,如果你是一个像我一样的老 C 程序员,最初是从 Kernighan 和 Ritchie 那里学习的,你只是本能地使用for (;;). 否则......这可能取决于您在哪里以及从谁那里学习 C++。

当然,在工作时,您会遵循房屋惯例,无论它们是什么。

于 2013-04-16T22:50:20.957 回答
3

这是一个无限循环吗?

是的。

我为什么要用这个而不是那个while(1)

因为(坏的,IMO)味道。顺便说一句,while (true)如果我真的必须创建一个无限循环,我会选择。

于 2013-04-16T22:39:09.843 回答