Инструкция break
Инструкция break останавливает циклы for, while, do while и блока switch. Выполнение программы продолжается с инструкции, следующей за закрывающей фигурной скобкой цикла или блока. Например, данная функция ищет в массиве целых чисел определенное значение. Если это значение найдено, функция сообщает его индекс, в противном случае она возвращает -1. Вот как выглядит реализация функции:
// возвращается индекс элемента или -1
int search( int *ia, int size, int value )
{
// проверка что ia != 0 и size > 0 ...
int loc = -1;
for ( int ix = 0; ix < size; ++ix ) {
if ( value == ia[ ix ] ) {
// нашли!
// запомним индекс и выйдем из цикла
1oc = ix;
break;
}
} // конец цикла
// сюда попадаем по break ...
return 1oc;
}
В этом примере break прекращает выполнение цикла for и передает управление инструкции, следующей за этим циклом, – в нашем случае return. Заметим, что break выводит из блока, относящегося к инструкции for, а не if, хотя является частью составной инструкции, соответствующей if. Использование break внутри блока if, не входящего в цикл или в switch, является синтаксической ошибкой:
// ошибка: неверное использование break
if ( ptr ) {
if ( *ptr == "quit" )
break;
// ...
}
Если эта инструкция используется внутри вложенных циклов или инструкций switch, она завершает выполнение того внутреннего блока, в котором находится. Цикл или switch, включающий тот цикл или switch, из которого мы вышли с помощью break, продолжает выполняться. Например:
white ( cin >> inBuf )
{
switch( inBuf[ 0 ] ) {
case '-':
for ( int ix = 1; ix < inBuf.size(); ++ix ) {
if ( inBuf[ ix ] == ' ' )
break; // #1
// ...
// ...
}
break; // #2
case '+':
// ...
}
}
Инструкция break, помеченная // #1, завершает выполнение цикла for внутри ветви case '-' блока switch, но не сам switch. Аналогично break // #2 завершает выполнение блока switch, но не цикла while, в который тот входит.