Share via


goto und bezeichnete Anweisungen (C)

Die Anweisung goto übertragt die Steuerung an eine Bezeichnung. Die angegebene Bezeichnung muss sich in derselben Funktion befinden und kann nur vor einer Anweisung in derselben Funktion stehen.

Syntax

statement:
labeled-statement
jump-statement

jump-statement:
goto identifier ;

labeled-statement:
identifier : statement

Eine Anweisungsmarke ist nur für eine goto-Anweisung sinnvoll. In jedem anderen Kontext wird eine bezeichnete Anweisung ohne Berücksichtigung der Bezeichnung ausgeführt.

Ein jump-statement muss sich in der gleichen Funktion befinden und kann nur vor einer Anweisung in der gleichen Funktion stehen. Der Satz der identifier-Namen, die auf goto folgen, verfügt über einen eigenen Namespace, sodass die Namen nicht mit anderen Bezeichnern in Konflikt treten. Bezeichnungen können nicht erneut deklariert werden. Weitere Informationen finden Sie unter Namespaces.

Es ist guter Programmierstil, die Anweisungen break, continue und return nach Möglichkeit der Anweisung goto vorzuziehen. Da die Anweisung break nur eine Ebene der Schleife beendet, ist möglicherweise eine goto -Anweisung erforderlich, um eine tief geschachtelte Schleife zu beenden.

In diesem Beispiel wird die goto-Anweisung veranschaulicht.

// 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 );
}

In diesem Beispiel übergibt eine goto-Anweisung die Steuerung an den Punkt mit der Bezeichnung stop, wenn i gleich 5 ist.

Siehe auch

Anweisungen