最近在阅读 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 )令人困惑。但是在布尔之前的时代,每个人都有一个#definefor trueor TRUEor some such,所以这是一个弱论点。最后,如果你是一个像我一样的老 C 程序员,最初是从 Kernighan 和 Ritchie 那里学习的,你只是本能地使用for (;;). 否则......这可能取决于您在哪里以及从谁那里学习 C++。
当然,在工作时,您会遵循房屋惯例,无论它们是什么。
这是一个无限循环吗?
是的。
我为什么要用这个而不是那个
while(1)?
因为(坏的,IMO)味道。顺便说一句,while (true)如果我真的必须创建一个无限循环,我会选择。