goto, instruction (C++)
L’instruction goto
transfère inconditionnellement le contrôle à l’instruction étiquetée par l’identificateur spécifié.
Syntaxe
goto identifier;
Notes
L'instruction étiquetée indiquée par identifier
doit se trouver dans la fonction actuelle. Tous les noms identifier
sont membres d'un espace de noms interne et, par conséquent, n'interfèrent pas avec d'autres identificateurs.
Une étiquette d’instruction est significative uniquement pour une goto
instruction ; sinon, les étiquettes d’instruction sont ignorées. Les étiquettes ne peuvent pas être redéclarées.
Une goto
instruction n’est pas autorisée à transférer le contrôle vers un emplacement qui ignore l’initialisation d’une variable qui se trouve dans l’étendue de cet emplacement. L’exemple suivant déclenche l’erreur C2362 :
int goto_fn(bool b)
{
if (!b)
{
goto exit; // C2362
}
else
{ /*...*/ }
int error_code = 42;
exit:
return error_code;
}
Il est bon style de programmation d’utiliser l’instruction break
, continue
et les return
instructions au lieu de l’instruction dans la goto
mesure du possible. Toutefois, étant donné que l’instruction break
sort d’un seul niveau d’une boucle, vous devrez peut-être utiliser une goto
instruction pour quitter une boucle profondément imbriquée.
Pour plus d’informations sur les étiquettes et l’instruction goto
, consultez Instructions étiquetées.
Exemple
Dans cet exemple, une goto
instruction transfère le contrôle au point étiqueté stop
lorsqu’il i
est égal à 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 );
}
Outer loop executing. i = 0
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 1
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 2
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 3
Inner loop executing. j = 0
Jumped to stop. i = 3
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour