假设您想在 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 许可协议
首先,循环的行为明显不同 - 第一个仍然打印数字
7
而另一个则没有。如果您交换了这些行,那么编译器不会有真正的区别,两种解决方案都将使用几乎相同的本机代码进行编译。
关于可读性(并且容易出错):这取决于,对于这样简单的规则,使其成为条件的一部分可能会更好,更易读。但是当它变得更复杂时,可能值得引入一些临时变量,然后
break
变体更容易阅读。实际上,更复杂的算法在循环内部使用break
是很常见的,通常甚至在内部使用break
的无限循环。