Код после ‘перерыва’ выполняется?

for (...)
for (...)
{
break;
break;   // 1
}

Будет ли выполняться код в (1)? Там также может быть там continue или что-нибудь еще. Я знаю, я мог бы просто проверить мой отладчик но я хочу знать, что говорит об этом стандарт C ++, так как мой компилятор может быть просто особым случаем.

-6

Решение

В соответствии с технические характеристики

6.6.1 Оператор перерыва [stmt.break]

Оператор break должен встречаться только в выражении итерации или в операторе switch и вызывает завершение
самого маленького вмещающего оператора итерации или оператора переключения; контроль переходит на утверждение
после прекращенного заявления, если таковые имеются.

следовательно 1 не должен даже достичь. Некоторые компиляторы Java могут даже пометить этот код недостижимый.

1

Другие решения

Согласно стандарту

Внутри вложенных операторов оператор break завершает оператор do, for, switch или while, который сразу же включает его.

Так что в вашем случае он всегда будет ломаться сначала и никогда не придет ко второму брейку.

1

Код в (1) не будет выполнен, break означает выпрыгнуть из цикла, поэтому после первого разрыва код будет выпрыгивать из внутреннего цикла.

0

В этом конкретном цикле нет, никакой код после прерывания не будет выполнен, так как прерывание выпадет из этого цикла и продолжит выполнение после окончания внутреннего цикла for. Хотя любой код вне внутреннего цикла, который появляется после разрыва (во внешнем цикле), будет выполнен.

0

Нет, каждый раз, когда выполняется первый оператор break, внутренний цикл завершается, и второй оператор break никогда не будет достигнут.

0

Ты можешь видеть Вот.

И я уверен, что следующий перерыв никогда не превзойдет. Неважно, какой компилятор вы используете.

0

Нет. Выполнение кода выпрыгивает из внутреннего первого цикла в тот момент, когда возникает разрыв.
Даже если код такой

break;
continue;
break;

происходит то же самое. Continue — это просто способ сказать компилятору итерировать цикл, пропуская любой промежуточный код.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector