Maîtriser l'instruction goto en C : Syntaxe, usage pratique et bonnes pratiques
Maîtriser l'instruction goto en C
Dans ce guide, vous apprendrez comment l'instruction goto fonctionne en C, sa syntaxe correcte, quand elle peut être utile et pourquoi elle est généralement déconseillée dans le code moderne.
Syntaxe de l'instruction goto
goto label;
...
label: instruction;
Un label est un identificateur suivi par deux points. Quand l'instruction goto est exécutée, le contrôle saute directement à la ligne marquée par cet étiquette.

Exemple : Utilisation de goto pour sortir d'une boucle prématurément
#include <stdio.h>
int main() {
const int maxInput = 100;
int i;
double nombre, moyenne, somme = 0.0;
for (i = 1; i <= maxInput; ++i) {
printf("%d. Entrez un nombre : ", i);
scanf("%lf", &nombre);
/* Si l'utilisateur entre un nombre négatif, sauter le reste de la boucle */
if (nombre < 0.0) {
goto sortie_boucle;
}
somme += nombre;
}
sortie_boucle:
moyenne = somme / (i - 1);
printf("Somme = %.2f\n", somme);
printf("Moyenne = %.2f", moyenne);
return 0;
}
Sortie
1. Entrez un nombre: 3 2. Entrez un nombre: 4.3 3. Entrez un nombre: 9.3 4. Entrez un nombre: -2.9 Somme = 16.60 Moyenne = 5.53
Pourquoi la plupart des développeurs évitent goto
L'instruction goto peut créer du "code spaghetti" qui est difficile à lire, tester et maintenir. Par exemple :
un:
for (i = 0; i < nombre; ++i) {
test += i;
goto deux;
}
deux:
if (test > 5) {
goto trois;
}
// ...
Sauter hors de portées imbriquées ou à travers des structures de contrôle complexes cache souvent le flux du programme, menant à des bugs difficiles à diagnostiquer.
Quand goto pourrait encore être approprié
Bien que rarement nécessaire, goto peut simplifier des scénarios spécifiques, tels que :
- Sortir de boucles profondément imbriquées sans multiples drapeaux.
- Centraliser le code de nettoyage avant de quitter une fonction.
Utilisez-le avec parcimonie, et documentez toujours l'intention pour que les futurs mainteneurs comprennent le but du saut.
Devriez-vous utiliser goto ?
Dans la plupart des programmes C modernes, les constructions de flux de contrôle structurées — boucles, fonctions et instructions switch — couvrent les cas d'utilisation pour goto. Le standard C et les lignes directrices de bonnes pratiques recommandent de l'éviter à moins qu'il n'y ait une raison impérieuse. Comme Bjarne Stroustrup, créateur de C++, l'a fameusement noté : "Le fait que 'goto' puisse tout faire est exactement pourquoi nous ne l'utilisons pas."
En fin de compte, si vous pouvez atteindre la même logique avec un code clair et structuré, choisissez ce chemin. Réservez goto pour des situations rares et bien justifiées et documentez-le soigneusement.
Langue C
- Technologie du bip (pager) : des premières innovations à la communication bidirectionnelle de demain
- Maîtriser la logique conditionnelle en C# : If, If-Else, If-ElseIf et instructions If imbriquées
- Maîtriser l'instruction Switch C# : Syntaxe, exemples et bonnes pratiques
- Instruction Break C# : Comment et quand l'utiliser
- Maîtriser l'instruction Continue C# : Comment ignorer efficacement les itérations de boucle
- Maîtriser l'instruction pass en Python : Guide pratique
- Maîtriser la syntaxe de base du C : Jetons, structure et points-virgules
- Nombres Python : Comprendre les types de données numériques immuables
- Qu'est-ce qu'un numéro de pièce (part number) ? Comprendre son rôle dans l'inventaire et les ventes