可能重复:
Is “for(;;)” faster than “while (TRUE)”? If not, why do people use it?
我一直在阅读编程手册(java),作者使用for(;;)
代替while(true)
。这件事真的开始让我烦恼所以我认为我应该检查哪个是最好用的,如果有任何差异。以下是可能的无限循环:
for(;;){
}
while(true){
}
do{
}while(true)
答案 0 :(得分:6)
它们被编译成同一个东西,仅仅是一种风格问题。年长的程序员可能会识别for(;;)
,但我可能只会使用while(true)
。
答案 1 :(得分:1)
是的,这只是风格问题,我更喜欢while(true)
,因为意图很明确。 for(;;)
对我没有任何意义。
答案 2 :(得分:1)
如有疑问,请测量。
如果没有别的,请编写所有三个版本的代码并查看每个版本生成的程序集。除非编译器非常愚蠢,否则我会打赌真钱,它会为所有三个生成完全相同的代码。
修改强>
FWIW,gcc为这三个代码生成相同的代码(至少在我写的死的简单案例中)。 while(true)
在编译时是可计算的;没有需要来执行测试,只需将跳转硬编码回循环的开头即可。
答案 3 :(得分:1)
它们在性能方面应该是相同的,但即使它们不是这样,速度与可读性无关。最好的方法是任何看到代码的人都会被最快认可的无限循环方法。我倾向于while (true)
因为它是最基本的情况,但这取决于谁在看代码。