Partager via


Instructions goto et étiquetées (C)

L'instruction goto transfère le contrôle à une étiquette. L'étiquette donnée doit résider dans la même fonction et peut apparaître devant une seule instruction dans la même fonction.

Syntaxe

statement:
labeled-statement
jump-statement

jump-statement:
goto identifier ;

labeled-statement:
identifier : statement

Une étiquette d'instruction est uniquement explicite pour une instruction goto. Dans tout autre contexte, une instruction étiquetée est exécutée sans tenir compte de l'étiquette.

Une instruction jump-statement doit résider dans la même fonction et peut apparaître devant une seule instruction dans la même fonction. L’ensemble des noms identifier suivant une instruction goto a son propre espace de noms, de sorte que les noms n’interfèrent pas avec d’autres identificateurs. Les étiquettes ne peuvent pas être redéclarées. Pour plus d’informations, consultez Espaces de noms.

Il est toutefois conseillé d’utiliser l’instruction break, continue et return plutôt que goto dans la mesure du possible. Étant donné que l’instruction break n’exécute une sortie que d’un niveau de la boucle, une instruction goto peut être nécessaire pour quitter une boucle dans une boucle profondément imbriquée.

Cet exemple illustre l'instruction 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 );
}

Dans cet exemple, une instruction goto transfère le contrôle au point étiqueté stop lorsque i est égal à 5.

Voir aussi

Instructions