С++ для начинающих

       

Инструкция 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, в который тот входит.



Содержание раздела