for(;;)这是一个无限循环?

时间:2013-04-16 22:38:12

标签: c++

最近,在进行c ++教程时,我遇到了一个看似如下的for循环:

for (;;){
   //Do stuff
}

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

3 个答案:

答案 0 :(得分:8)

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

答案 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 ++的位置和对象。

当然,在工作时,你遵循家庭惯例,无论他们是什么。

答案 2 :(得分:3)

  

这是一个无限循环吗?

  

为什么我会使用此while(1)

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