Вы не сказали, какой язык вы используете, но я никогда не видел языка с таким синтаксисом, который бы делал что-то кроме разрыва внутреннего цикла (позволяя продолжить внешнему). Тем не менее, вы действительно должны упомянуть, какой язык вы используете! : -)
Многие языки с таким синтаксисом поддерживают метки и направленные разрывы, которые можно использовать для прерывания внешнего цикла. Это обычно выглядит так:
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 (я использовал меньшие числа, чтобы сделать его более очевидным): Без направленного разрыва | С направленным разрывом .
Также обратите внимание, что в этих языках отступы не имеют никакого значения. Этот код точно тот же ваш код (только заметно менее читаемый):
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;
}
}
Очевидно, что вы никогда не захотите этого делать, но дело в том, что отступы предназначены для людей, а не для компиляторов (в языках с таким стилем синтаксиса).