哪个无限循环更适合使用

时间:2012-04-11 21:16:27

标签: java c++ c loops

  

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

我一直在阅读编程手册(java),作者使用for(;;)代替while(true)。这件事真的开始让我烦恼所以我认为我应该检查哪个是最好用的,如果有任何差异。以下是可能的无限循环:

for(;;){

}

while(true){

}

do{

}while(true)
  • 哪个更喜欢使用?
  • 在演出中是否有任何差异(就像你必须测试在while的情况下是否为真)或者它们是否编译成同一个东西?

4 个答案:

答案 0 :(得分:6)

它们被编译成同一个东西,仅仅是一种风格问题。年长的程序员可能会识别for(;;),但我可能只会使用while(true)

答案 1 :(得分:1)

是的,这只是风格问题,我更喜欢while(true),因为意图很明确。 for(;;)对我没有任何意义。

答案 2 :(得分:1)

如有疑问,请测量。

如果没有别的,请编写所有三个版本的代码并查看每个版本生成的程序集。除非编译器非常愚蠢,否则我会打赌真钱,它会为所有三个生成完全相同的代码。

修改

FWIW,gcc为这三个代码生成相同的代码(至少在我写的死的简单案例中)。 while(true)在编译时是可计算的;没有需要来执行测试,只需将跳转硬编码回循环的开头即可。

答案 3 :(得分:1)

它们在性能方面应该是相同的,但即使它们不是这样,速度与可读性无关。最好的方法是任何看到代码的人都会被最快认可的无限循环方法。我倾向于while (true)因为它是最基本的情况,但这取决于谁在看代码。