中断缩进的循环结构

时间:2011-11-27 15:23:30

标签: loops for-loop break

for这样的循环结构中,break;“知道”何时处于缩进级别?

例如:

for (i = 0; i < 10; i++) {
    for (s = 0; s <= i; s++) {
        if (s == 7) break;
    }
}

break;会阻止内部吗?

由于

6 个答案:

答案 0 :(得分:3)

你还没有说过你正在使用什么语言,但我从来没有见过一种语言,除了打破内部循环(允许外部继续)之外,还有其他任何语言。不过,你真的应该提到你正在使用的语言! : - )

许多具有这种语法的语言都支持标签和定向中断,可用于打破外部循环。通常看起来像这样:

outer: for (i = 0; i < 10; i++) {
    inner: for (s = 0; s <= i; s++) {
        if (s == 7) break outer;
    }
}

inner标签在这种情况下是可选的,因为我们没有将它用于任何事情,我只是为了完整性而将它包括在内。)

该示例将破坏内部外部循环。它在Java,JavaScript和其他人中都有效;在C中你需要一个标签后循环和(颤抖)a goto你可能会更好(可以说总是更好)只是在外循环检查中包含某种终止条件内循环集。

以下是JavaScript中的实例(我使用较小的数字使其更加明显):Without the directed break | With the directed break

另请注意,在这些语言中,缩进完全无关紧要。此代码 完全 与您的代码相同(只是显着不太可读):

for (i = 0; i < 10; i++) {
for (s = 0; s <= i; s++) {
if (s == 7) break;
}
}

这也是相同的(并且显着不太可读):

        for (i = 0; i < 10; i++) {
    for (s = 0; s <= i; s++) {
if (s == 7) break;
    }
        }

显然你永远不想这样做,但重点是缩进是针对人的,而不是编译器(使用这种语法的语言)。

答案 1 :(得分:2)

它只会打破内循环。

参考 MSDN doccumentation

在循环中,break终止执行最近的封闭doforwhile语句。控制传递到终止语句后面的语句(如果有)。

答案 2 :(得分:1)

缩进级别在使用赞誉的语言中并不重要。只有内环会被打破。

答案 3 :(得分:0)

它会停止内在的。

答案 4 :(得分:0)

只是内在的一个。中断将突破单个循环。您需要额外的逻辑来完全打破嵌套循环,否则如果嵌套循环封装在函数中,则可以使用return。

答案 5 :(得分:0)

只是内在的一个。有些语言可以选择哪种语言。