for(;;)和while(1)之间有什么区别?

时间:2010-12-04 07:09:02

标签: c++ infinite-loop

  

可能重复:
  Is “for(;;)” faster than “while (TRUE)”? If not, why do people use it?

我想知道for(;;)while(1)在执行相同功能时有什么区别?编译速度会有什么不同

10 个答案:

答案 0 :(得分:9)

与这些不同的是,许多编译器会警告while(true)(“用作循环表达式的常量表达式”),而我所知道的都不会警告for(;;)

但是他们应该生成相同的代码。

答案 1 :(得分:8)

根本没有功能差异,仅仅是品味。

答案 2 :(得分:8)

使用for,您可以执行此操作:

#define ever (; ;) // note the two happy faces? ;)

for ever { ... }   // endless loop

while无法实现。

答案 3 :(得分:6)

  • 两者都会导致无限循环,除非 break被明确调用。
  • 我个人更喜欢(1),它是 更具可读性

答案 4 :(得分:4)

没有区别。我更喜欢后者。

答案 5 :(得分:4)

一个中的6个,另一个中的110个。

后者看起来更简洁。

答案 6 :(得分:0)

没有区别,除非您想稍后使用某种类型的计数器。

for (int i =0; i < 100; i++) {
   // some code
} 

答案 7 :(得分:0)

两者在C ++中都是相同的。不过,您的帖子标有c#c++

如果您使用的是C#,则需要使用while (true) {...}。就个人而言,我更喜欢C ++中的相同:数字仅在处理时才使用......好吧,数字!处理布尔值时,会使用truefalse

答案 8 :(得分:0)

它们都定义了完全相同的功能行为,并从C#生成完全相同的IL代码。

答案 9 :(得分:-1)

我老了,我仍然做以下事情:

#define TRUE 1  
#define FALSE 0  
while (TRUE) { /*--do something, mutley--* }