对于(;;){}或while(true){}有什么好处?

时间:2012-11-01 11:14:54

标签: c++ c

  

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

我想知道更优选哪个无限循环:

for(;;) {
    // Do some stuff
}

#define TRUE 1

while(TRUE) {
    // Do some stuff
}

从性能的角度来看,它们之间是否存在差异?

从编码标准的角度来看,更可取的是什么?

5 个答案:

答案 0 :(得分:2)

从性能的角度来看,这无关紧要。编译器将两者优化为相同的汇编代码。从“编码标准”的角度来看,(;;)更简洁,这很好。虽然while(TRUE)稍微清楚一点,但(;;)是如此常见,以至于在这种情况下的清晰度并不是一个大问题(事实上,for(;;)的普遍性可能会比while版本更清晰)。

答案 1 :(得分:1)

这是品味的问题,但尤其是使用的编码惯例问题。优选地,应该在同一项目中的任何地方使用一种样式,或者在混合时选择样式时使用相同的规则。许多C ++框架也永远提供宏,在我看来应该优先使用框架的代码。生成的代码应该没有区别。

答案 2 :(得分:0)

没有区别。 while (true)对某些人来说可能更为明显。

答案 3 :(得分:0)

  

从性能的角度来看,它们之间是否存在差异?

不,没有。

我使用for (; ;)但原因是异想天开的:它看起来像for (ever) …(这是C ++社区中已有的惯用语。)

答案 4 :(得分:0)

两者之间的差异并不大。当您知道要遍历的元素数时,通常会使用。如果需要满足条件,则使用while