Dela via


goto och märkta instruktioner (C)

Instruktionen goto överför kontrollen till en etikett. Den angivna etiketten måste finnas i samma funktion och kan bara visas före en instruktion i samma funktion.

Syntax

statement:
labeled-statement
jump-statement

jump-statement:
goto identifier ;

labeled-statement:
identifier : statement

En instruktionsetikett är endast meningsfull för en goto -instruktion. I andra sammanhang körs en etikettsats utan hänsyn till etiketten.

Ett jump-statement måste finnas i samma funktion och kan bara visas före en instruktion i samma funktion. Namnuppsättningen identifier efter en goto har ett eget namnutrymme så att namnen inte stör andra identifierare. Etiketter kan inte redeclared. Mer information finns i Namnutrymmen.

Det är bra programmeringsformat att använda instruktionen break, continueoch return i stället för goto när det är möjligt. Eftersom -instruktionen break bara avslutas från en nivå i loopen kan en goto vara nödvändig för att avsluta en loop inifrån en djupt kapslad loop.

Det här exemplet visar instruktionen 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 );
}

I det här exemplet överför en goto instruktion kontrollen till den punkt som är märkt stop när i den är lika med 5.

Se även

Uppgifter