Как реагирует предложение break в этих примерах? - PullRequest
3 голосов
/ 09 февраля 2020

Как работает предложение break?

Я понимаю, если у меня есть break внутри al oop, l oop прекратит его выполнение. Например:

for (int i=0; i<10; i++) {
    break;
}

Но сработает ли это, если предложение break находится внутри al oop, но также внутри if или else? Например:

for (int i=0; i<10; i++) {
    if (i==7) {   
       //code
       break;
       //code
    }
}

Завершит ли предложение break конец for l oop или просто пропустит код рядом с ним в предложении if и продолжит итерацию?

Что если предложение break находится внутри al oop внутри al oop? Закончится ли выполнение обоих циклов или только ближайшего?

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 10 февраля 2020
for (int i=0; i<10; i++) {
    if (i==7) {   
       //code A
       break;
       //code B
    }
}

Это запустит l oop 8 раз и сломает все l oop на i=7. Кроме того, оператор code B после break будет недоступен, поэтому нет смысла писать его в этом случае.

1 голос
/ 10 февраля 2020

Оператор 'break' всегда ломает l oop. Если вы хотите пропустить итерацию по указанному c индексу, вы можете использовать ключевое слово continue:

for (int i=0; i<10; i++) {
if (i==7) {   
   //code
   continue;
   //second part of code
}

}

Что будет делать этот код, если я == 7, он будет выполнять // часть кода и, когда он достигнет оператора continue, он немедленно пропустит // вторую часть кода и перейдет к следующей итерации i = 8. Если у вас есть несколько вложенных циклов, разрыв оператор нарушит только тот l oop, к которому он применяется. Однако, если родительский l oop сломан, дочерний (вложенный) l oop тоже автоматически сломается.

    for (int i=0; i<10; i++) {
     for(int j = 0; j<10; j++){
      if(j==3){
       break;
    }
  }
}

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

1 голос
/ 10 февраля 2020

break вызывает переход к концу l oop, см. Ниже:

for (int i=0; i<10; i++) {
    if (i==7) {   
       // code here will be executed
       break;
       // code here will not be executed
    }
} // break statement is like a goto to this line

a break всегда влияет только на один l oop, самый внутренний l oop внутри

1 голос
/ 10 февраля 2020

Оператор break всегда будет выходить только из внутреннего l oop. If-операторы не считаются таковыми. Если вам нужно разорвать несколько циклов одновременно, вы можете использовать теги:

A: while (true) {
    B: while (true) {
         break A;
    }
}
...