C 停止 for 循环的“最佳”方法是什么?

新手上路,请多包涵

假设您想在 C++ 中创建一个 for 循环,但除了确定的条件之外,您还知道循环何时或是否应该停止。请注意,这样的条件不一定必须是硬编码的,循环也不应该一直具有这样的确定值。这只是一个示例,可能对随机循环有用,或者内容是在运行时确定的。让我们让这个示例保持简单,并专注于可以应用于编程中任何此类相关任务的解决方案。

我想比较这两种解决方案。第一个使用中断语句,第二个使用多个或组合条件。就效率或可靠性而言,哪一种是完成任务的“最佳”或“正确”方式。哪一个更不容易出错?随意提出另一种解决方案。

 const int MAX_SIZE = 10;
int myArray[MAX_SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

// two ways to stop a loop

for (int x = 0; x <  MAX_SIZE; x++) {
   if (myArray[x] == 7) {
      break;
   }
   cout << myArray[x] << “ “; // fixed
}

for (int x = 0; (x < MAX_SIZE) && (myArray[x] != 7); x++) {
   cout << myArray[x] << “ “;
}

原文由 Galaxy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 843
1 个回答

首先,循环的行为明显不同 - 第一个仍然打印数字 7 而另一个则没有。

如果您交换了这些行,那么编译器不会有真正的区别,两种解决方案都将使用几乎相同的本机代码进行编译。

关于可读性(并且容易出错):这取决于,对于这样简单的规则,使其成为条件的一部分可能会更好,更易读。但是当它变得更复杂时,可能值得引入一些临时变量,然后 break 变体更容易阅读。实际上,更复杂的算法在循环内部使用 break 是很常见的,通常甚至在内部使用 break 的无限循环。

原文由 Zbynek Vyskovsky - kvr000 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题