Поделиться через


goto Операторы с метками (C)

Оператор goto передает управление метке. Данная метка должна находиться в той же функции и может присутствовать только перед одним ее оператором.

Синтаксис

statement:
labeled-statement
jump-statement

jump-statement:
goto identifier ;

labeled-statement:
identifier : statement

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

Объект jump-statement должен находиться в одной функции и может отображаться только перед одним оператором в той же функции. Набор identifier имен после goto имеет собственное пространство имен, поэтому имена не мешают другим идентификаторам. Метки не могут быть повторно объявлены. Дополнительные сведения см. в разделе Пространства имен.

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

В следующем примере показано использование оператора goto.

// goto.c
#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 < 3; j++ )
        {
            printf_s( " Inner loop executing. j = %d\n", j );
            if ( i == 5 )
                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 );
}

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

См. также

Операторы