Подтвердить что ты не робот

Работает ли `break` только для` for`, `while`,` do-while`, `switch 'и для` if` операторов?

Предположим, что в цикле for есть оператор if:

for( ; ; )
{
  if( )
    {
     printf(" inside if");
     break;
    }//if         

  printf("inside for");
}//for

Теперь, оператор break заставит компилятор выйти из цикла for или он выйдет только из тела if после выполнения условия в if?

4b9b3361

Ответ 1

Оператор break вырывается из ближайшего охватывающего оператора цикла или оператора.

break не выходит из оператора if, а ближайшего loop или switch, который содержит этот оператор if. Причиной не выходить из оператора if является то, что он обычно используется, чтобы решить, хотите ли вы выйти из loop.

Интересно, что телефонный коммутатор плохо себя ведет, потому что компания, которая изобрела C сделала именно эту ошибку. Они хотели вырваться из инструкции if, и они забыли, что она выйдет из всего оператора for.

Ответ 2

Он вырвется из цикла for. Оператор break влияет только на циклы (do, for, while) и switch (для выхода из case).

Из C99 standard, раздел 6.8.6.3:

Ограничения

Оператор break должен появляться только в теле коммутатора или в теле цикла или в теле цикла.

Семантика

Оператор break прекращает выполнение самого маленького закрывающего переключателя или итерации.

Ответ 3

break не будет выходить из предложения if, но ближайший цикл или предложение switch. Кроме того, предложение if не называется "циклом", потому что оно никогда не повторяет его содержимое.

Ответ 4

Оператор break действует только на циклы и предложение switch. В любом случае он выйдет из ближайшего замкнутого контура. Хорошей практикой является использование условного перерыва, т.е. Разрыв, заключенный в оператор if. Если вы хотите выйти из всех циклов или цикла, вы можете использовать инструкцию goto. Например:

while(true) {
     while (some_condition) {
          if (some_condition)
               goto label;
     }
}
label: // do something here

Ответ 5

Оператор break не будет нарушать оператор if или else. если вы используете оператор break, он в основном выходит из ближайшего цикла (цикл for, цикл loop, цикл while и переключатель case)

Ответ 6

Оператор перерыва не имеет смысла при принятии решений. Он используется только в циклах, когда вы хотите принудительно завершить цикл и продолжить выполнение с оператора, следующего за циклом. Там нет вопроса "оператор break будет заставлять элемент управления выходить из оператора if, если условие истинно", потому что независимо от оператора break в любом случае элемент управления выйдет из оператора if, если условие истинно, и когда его тело будет казнены. Оператор if не является циклом. оно либо не выполняется вообще, либо выполняется только один раз. Так что абсолютно бессмысленно ставить перерыв в теле if.