Оператор 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 );
}