【问题标题】:Disadvantage of for loop [closed]for循环的缺点[关闭]
【发布时间】:2014-02-19 01:52:20
【问题描述】:

for 循环的实际缺点是什么?不,我是认真的。一定有什么对的。有 while 和 do while 循环,两者都有效,但我们有一个 for 循环。由于开发了while和do while,for循环肯定有一些缺点,对吧?

【问题讨论】:

  • 没有缺点,如果一个比另一个更能表达你的意图,那就用它吧。
  • 所有循环结构都是完全等价的。您不妨询问一下 while 循环的缺点!
  • 我的工具箱中有很多相似但略有不同的螺丝刀。我总是为手头的工作选择最合适的。
  • @paddy 我同意,你总是必须足智多谋和灵活。如果您查看您的工具箱,发现只有一把螺丝刀可以将它们全部拧紧,那么您可能需要扩展您的工具收藏。

标签: c++ for-loop


【解决方案1】:

不,while 循环是制作循环的基本结构,如果您愿意,可以基于条件 goto 或程序集跳转。但是,由于一直在编写以下代码来遍历数组:

int i = 0;
while (i < N)
{
    //do something, probably access an array
    i++;
}

他们创造了一种更简洁、更易读的方法:

for(int i = 0; i < N; i++)
{
    //do something
}

这是Syntactic sugar 的示例。

因为没有固有的理由让这些事情存在,所以 Alan Perlis 的名言是“语法糖会导致分号癌”。

话虽如此,你总是要争取更多可读的代码,所以去吧。

【讨论】:

  • 此外,还有一种简单的方法可以在 while 循环和 do-while 循环之间进行转换,从而使所有 3 个循环结构完全等效。 do { &lt;BODY&gt; } while (cond); 完全等同于 { &lt;BODY&gt; } while(cond) { &lt;BODY&gt; }
  • for 循环也在 FORTRAN 中,它早于 C++ 和 C。
  • 这对我的朋友来说将是一个很好的耳光。谢谢。
【解决方案2】:

完全没有缺点。我认为 Go 语言取消了 while(),它只有 for()。

【讨论】:

    【解决方案3】:

    尽管 while(cond){...} 和 for(; cond; ){...} 是等价的。然而,以这种方式编写一个没有计数器和增量表达式的 for 循环是很奇怪的。为了使您的代码更容易和可读,您应该使用原始和自然格式的 for 循环。即 for (counter; cond; expr)。如果您可以根据特定表达式的计算来迭代循环体,那么您应该坚持使用 while 循环。

    【讨论】:

      【解决方案4】:

      缺点可能是在唯一的for 循环中,“while(cond) { /* do something*/ }”是无效代码... :-)

      【讨论】:

      • 其实用for循环就可以了。 "while(cond) { /* do something*/ }" 等价于 "for(;cond;) { /* do something*/ }"。试试看。
      猜你喜欢
      • 2014-03-22
      • 1970-01-01
      • 2016-08-26
      • 2016-03-25
      • 2013-08-07
      • 2021-08-14
      • 2018-08-12
      • 1970-01-01
      相关资源
      最近更新 更多