最近在阅读 c++ 教程时,我遇到了一个看起来像这样的 for 循环:
for (;;){
//Do stuff
}
这是一个无限循环吗?我为什么要用这个而不是那个while(1)
?
是的,它是无限的。传统上,编译器会在您使用时生成警告while(1)
,但在使用时不会for(;;)
。我不知道现在是否仍然如此。
这是一个无限循环。更准确地说,如果 a 中的条件for
为空,则认为它true
。至于while ( true )
vs. for (;;)
:历史上for (;;)
是惯用的形式(由 Kernighan 和 Ritchie 使用),可能部分是因为早期的 C 没有布尔值。while ( 1 )
在我工作过的任何地方,使用都不会通过代码审查。使用布尔值,while ( true )
绝对看起来比 更直观for (;;)
,但while ( 1 )
令人困惑。但是在布尔之前的时代,每个人都有一个#define
for true
or TRUE
or some such,所以这是一个弱论点。最后,如果你是一个像我一样的老 C 程序员,最初是从 Kernighan 和 Ritchie 那里学习的,你只是本能地使用for (;;)
. 否则......这可能取决于您在哪里以及从谁那里学习 C++。
当然,在工作时,您会遵循房屋惯例,无论它们是什么。
这是一个无限循环吗?
是的。
我为什么要用这个而不是那个
while(1)
?
因为(坏的,IMO)味道。顺便说一句,while (true)
如果我真的必须创建一个无限循环,我会选择。