Оператор goto (C++)

Оператор goto осуществляет безусловную передачу управления оператору, метка которого задана идентификатором.

goto identifier;

Заметки

Оператор, метка которого задана в параметре identifier, должен находиться в текущей функции. Все имена, заданные в параметре identifier, являются членами внутреннего пространства имен и, следовательно, не пересекаются с другими идентификаторами.

Метка оператора имеет значение только для оператора goto; в остальных случаях метки операторов игнорируются. Повторное объявление меток невозможно.

Вместо goto во всех случаях, когда это возможно, рекомендуется использовать операторы break, continue и return. Однако, поскольку оператор break выполняет выход только из одного уровня цикла, возможны ситуации, когда для выхода из глубоко вложенного цикла может потребоваться использовать оператор goto.

Дополнительные сведения о метках и операторе goto см. в разделах Операторы с метками и Использование меток с оператором goto.

Пример

В этом примере оператор goto передает управление в точку с меткой stop, когда значение переменной i равно 3.

// goto_statement.cpp
#include <stdio.h>
int main()
{
    int i, j;

    for ( i = 0; i < 10; i++ )
    {
        printf_s( "Outer loop executing. i = %d\n", i );
        for ( j = 0; j < 2; j++ )
        {
            printf_s( " Inner loop executing. j = %d\n", j );
            if ( i == 3 )
                goto stop;
        }
    }

    // This message does not print: 
    printf_s( "Loop exited. i = %d\n", i );
    
    stop: 
    printf_s( "Jumped to stop. i = %d\n", i );
}
  

См. также

Ссылки

Операторы перехода (C++)

Ключевые слова в C++