可能重复:
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
}
从性能的角度来看,它们之间是否存在差异?
从编码标准的角度来看,更可取的是什么?
答案 0 :(得分:2)
从性能的角度来看,这无关紧要。编译器将两者优化为相同的汇编代码。从“编码标准”的角度来看,(;;)更简洁,这很好。虽然while(TRUE)稍微清楚一点,但(;;)是如此常见,以至于在这种情况下的清晰度并不是一个大问题(事实上,for(;;)的普遍性可能会比while版本更清晰)。
答案 1 :(得分:1)
这是品味的问题,但尤其是使用的编码惯例问题。优选地,应该在同一项目中的任何地方使用一种样式,或者在混合时选择样式时使用相同的规则。许多C ++框架也永远提供宏,在我看来应该优先使用框架的代码。生成的代码应该没有区别。
答案 2 :(得分:0)
没有区别。 while (true)
对某些人来说可能更为明显。
答案 3 :(得分:0)
从性能的角度来看,它们之间是否存在差异?
不,没有。
我使用for (; ;)
但原因是异想天开的:它看起来像for (ever) …
(这是C ++社区中已有的惯用语。)
答案 4 :(得分:0)
两者之间的差异并不大。当您知道要遍历的元素数时,通常会使用。如果需要满足条件,则使用while