本着Do your loops test at the top or bottom?等问题的精神:
您使用哪种样式用于无限循环,为什么?
答案 0 :(得分:36)
while(true) {}
它似乎最有效地传达了循环的含义。
答案 1 :(得分:22)
for (;;)
{
/* No warnings are generated about constant value in the loop conditional
plus it is easy to change when you realize you do need limits */
}
答案 2 :(得分:12)
#define forever for(;;)
forever {
/*stuff*/
}
答案 3 :(得分:9)
请来自(23)
答案 4 :(得分:7)
while(1)
{
//do it
}
这就是我的表现。
答案 5 :(得分:6)
我喜欢使用 for(;;)方法,因为 MSVC ++ 编译器抱怨关于while循环方法:
void main()
{
while(1) // test.cpp(5) : warning C4127: conditional expression is constant
{
}
for(;;)
{
}
}
答案 6 :(得分:5)
我更喜欢while(1)
或while(true)
- 这是最清楚的。 do { } while(true)
似乎是不必要的混淆。同样地,for(;;)
可能会让以前从未见过的人感到困惑,而while(true)
则非常直观。而且绝对没有理由做label: ... goto label;
,这更令人困惑。
答案 7 :(得分:3)
10 some l33t code
20 goto 10
答案 8 :(得分:3)
我在C风格的语言中使用for (;;)
,在不支持该结构的语言中使用while true
。
我在K& R中学习了for (;;)
方法,对我而言,它总是感觉像是惯用语。
答案 9 :(得分:3)
无限尾递归;)
这有点依赖于编译器...
答案 10 :(得分:3)
我通常使用for(;;) { }
,我一直认为这是“永远”。
某些语言提供了repeat { }
构造,它将永远本地循环。我发现for(;;) { }
构造在视觉上与它最相似,因为它与普通的for()
构造有很大不同。这是while(1) { }
实际上没有的无限循环的重要属性。
答案 11 :(得分:2)
让火焰开始......
如果循环是 true 无限循环(即没有中断条件 - 只有外部事件可以终止线程/进程'执行),那么我实际上更喜欢标签和{{ 1}}。原因如下:
首先,使用goto
,while
和for
都意味着循环可能会终止。即使终止条件永远不可能实现,这些结构的语法含义是 某些终止条件。
其次,使用循环结构引入了额外级别的缩进。我讨厌没有必要的缩进。它浪费了宝贵的柱状房地产。
第三,唯一 true 无限循环是无条件跳回循环开头的循环。只有do ... while
符合此目的。
事实是,我并不在乎它。他们都完成了工作,大多数都会产生完全相同的装配说明。 然而,生成的程序集很可能是无条件跳转(如果你的优化程序值得一试),它直接映射到哪个C结构,孩子们?那是对的......你的老朋友goto
。
答案 12 :(得分:1)
for(;;);
填充文字。
答案 13 :(得分:1)
for(;;)就是我经常看到的。
答案 14 :(得分:1)
offtopic:如果你想到你想表达什么,你通常不需要无限循环。
答案 15 :(得分:1)
为自己编写代码时,我用于(;;)。其他人往往会被其语法所困惑,因此对于其他人必须看到/使用的代码,我使用while(true)。
答案 16 :(得分:0)
无限循环是一个坏主意,但在实践中并不总是如此。
我更喜欢while(1){}但是要确保循环中的某些内容可以导致它爆发。
答案 17 :(得分:0)
我通常使用while() {}
,但在得知for(;;) {}
不是某种疯狂的无效语法后,我肯定会使用更独特的选项。
将无限循环与实际条件区分开来,你知道。
答案 18 :(得分:0)
我现在更喜欢“for (;;)
”成语,因为它似乎更多地“伸出”了。我过去习惯使用“while (true)
”成语,因为我认为它更好地表达了意图,但我已经转换,因为我认为“for (;;)
”成语已经足以充分表达意图以及我相信通过更加明显更好。
有点像Stroustrup如何使C ++中的新演员有目的地丑陋 - 所以他们坚持下去。