2013-04-16 109 views
2

最近同时通过C++教程去我遇到了一个for循环是这样的:for(;;)这是一个无限循环吗?

for (;;){ 
    //Do stuff 
} 

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

+3

是的。使用你最喜欢的那个。 – jrok

+0

是的。没有理由使用它而不是'while(1)'或'while(true)':偏好的问题。但是按照我的口味:'for(;;)'很丑。 –

+4

'((...;)'显然是更好的风格。 – john

回答

8

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

+0

MSVC仍然在足够高的警告级别 –

3

这是一个无限循环吗?

是。

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

由于(坏,IMO)的味道。顺便说一句,如果我真的要创建一个无限循环,我会去while (true)

+0

真正的程序员使用'goto'来处理这些循环,另一个'goto'(或'return')来退出它们。 :) –

+2

@LeeMeador:真正的程序员不使用'goto';) –

+3

+1。 -1为缺少幽默感。 –

5

这是一个无限循环。更准确地说,如果for中的条件为空,则它被认为是true。至于while (true)for (;;):历史上for (;;)是惯用形式(由Kernighan和Ritchie使用),也许部分原因是因为早期的C没有布尔值。使用while (1)不会在我工作的任何地方通过代码审查。使用布尔值,while (true)显然比for (;;)更直观,但while (1)令人困惑。但在预布尔时间中,每个人都有#define,trueTRUE或其他类似的,所以这是一个弱论证。最后,如果你是一位老C程序员,就像我一样,最初从Kernighan和Ritchie那里学习过,你只是本能地使用for (;;)。否则......这可能取决于你从哪里学习了C++。

当然,在工作时,你遵循房屋惯例,他们是什么。