【问题标题】:While vs. for: what is the best? [closed]while vs. for:什么是最好的? [关闭]
【发布时间】:2014-02-08 00:43:50
【问题描述】:

如果我可以同时使用 for 和 while 进行循环,我应该选择哪个?

[为]

int num = 10;
int i;

for (i=0; i<num; i++)
{
    /* ... */
}

[同时]

int num = 10;
int i = num;

while ( i-- )
{
    /* ... */
}

【问题讨论】:

  • 后者永远不会没有休息就结束。
  • 两者都不是。用于 (int i=0; i
  • 定义最佳....速度最佳?记忆最佳?
  • @David Heffernan。 GCC 给我这个错误:error: ‘for’ loop initial declarations are only allowed in C99 mode
  • 但是我为什么要使用旧标准的东西呢?

标签: c for-loop while-loop cycle


【解决方案1】:

forwhile 之间的选择只是为了清楚:

K&R .第 1 章 For 语句:

while 和 for 之间的选择是任意的,基于似乎 更清晰。 for 通常适用于初始化和 增量是单个语句并且在逻辑上相关,因为它更紧凑 而不是while,它将循环控制语句放在一个地方。

【讨论】:

    【解决方案2】:

    当然,性能取决于所用语言的实现。但是,在大多数情况下,对于大多数编译器,两个循环生成的代码几乎是相同的。

    当您不知道要迭代多少次时,经验法则是使用while。在您的示例中,它没有太大区别。使用对你来说更清楚的东西。

    是的,for 循环中的声明只允许在较新版本的 C (C99) 中。

    【讨论】:

    • 现在大多数 CPU 都有某种可用的矢量处理汇编指令。编译器将 for 循环转换为向量指令比 while 循环简单得多。对于 num = 10,它可能是一个洗牌,但对于更大的数组,它可能是一个显着的胜利。
    【解决方案3】:

    通常,您会为类似的事情使用for 循环,因为您知道开始循环之前需要循环运行多少次。 while 循环更适用于当您不知道要重复多少次时,用户输入的某些内容或一些随机的 int 会改变它

    【讨论】:

    • 所以对于你的情况,我会使用 for 循环
    【解决方案4】:

    在上面的示例中,您应该使用 for 循环,因为它清楚地表达了您的意图。 “执行此循环 num 次”。此外,编译器可能更简单地将循环优化为向量汇编操作。

    当你有一个清晰可表达的条件时,你应该使用一个while循环,比如 “读取行直到 EOF”或其他一些没有易于枚举的解决方案的条件。

    另外,我认为依赖 0 是错误的事实是不好的做法。您应该清楚地写出退出循环的条件。

    【讨论】:

      【解决方案5】:

      每个程序都在while循环中解决,可以在for循环中解决,但for循环适用于:- 1--> 如果我知道循环将执行多少次,如果我不知道循环将执行多少次,while 循环适用。

      【讨论】:

      • 这个答案可能更像是评论??
      猜你喜欢
      • 2023-03-17
      • 2015-06-21
      • 2010-10-04
      • 1970-01-01
      • 2010-09-13
      • 2010-09-15
      • 2011-06-29
      • 2011-04-07
      • 2010-10-05
      相关资源
      最近更新 更多