最近,在进行c ++教程时,我遇到了一个看似如下的for循环:
for (;;){
//Do stuff
}
这是一个无限循环吗?我为什么要使用它而不是while(1)
?
答案 0 :(得分:8)
是的,这是无限的。传统上,编译器会在您使用while(1)
时生成警告,但在使用for(;;)
时则不会生成警告。我不知道是否仍然如此。
答案 1 :(得分:5)
这是一个无限循环。更确切地说,如果for
中的条件为空,则将其视为true
。至于while ( true )
与for (;;)
:历史上for (;;)
是惯用形式(由Kernighan和Ritchie使用),也许部分是因为早期的C没有布尔。使用while ( 1 )
不会在我工作的任何地方通过代码审查。对于布尔值,while ( true )
肯定看起来比for (;;)
更直观,但while ( 1 )
令人困惑。但是在预布尔时间内,每个人都有#define
true
或TRUE
或其他一些,所以这是一个弱论点。最后,如果你是一个老C程序员,像我一样,最初从Kernighan和Ritchie那里学习,你只是本能地使用for (;;)
。否则......它可能取决于你学习C ++的位置和对象。
当然,在工作时,你遵循家庭惯例,无论他们是什么。
答案 2 :(得分:3)
这是一个无限循环吗?
是
为什么我会使用此
while(1)
?
因为(坏,IMO)的味道。顺便说一下,如果我真的不得不创建一个无限循环,我会选择while (true)
。