4

我只是为了知识而问这个问题(因为我认为这与像我这样的初学者无关)。
我读到 C 程序员更喜欢

 for(; ;) {....}

超过

 while(1) {....}

出于效率原因的无限循环。一种形式的循环确实比另一种形式更有效,还是仅仅是风格问题?

4

1 回答 1

6

两种构造在行为上是等效的。

关于偏好:

C 编程语言,Kernighan & Ritchie

使用表格

for (;;)

对于一个无限循环。

编程实践,Kernighan & Pike,

也喜欢

for (;;)

“对于无限循环,我们更喜欢 for(;;) 但 while(1) 也很流行。不要使用这些形式以外的任何东西。”

PC-Lint

也喜欢

for (;;)

716 while(1) ... -- 找到了 while(1) ... 形式的构造。虽然这表示期望布尔值的上下文中的常量,但它可能反映了一种编程策略,其中无限循环以该构造为前缀。因此,它被赋予了一个单独的编号,并被置于信息类别中。更传统的无限循环前缀形式是 for(;;)

for (;;)历史上更受欢迎的理由之一(也许不是最重要的,我不知道)是一些旧编译器会为构造while (1)生成测试。while (1)

另一个原因是:for(;;)是最短的形式(以字符数计),也不包含任何幻数(正如@KerrekSB在 OP 问题评论中for(;;)指出的那样)。

于 2013-06-30T20:46:14.943 回答