Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que je reçois le message « Erreur : passer à l'étiquette du cas » dans mon instruction Switch ?

Pourquoi est-ce que je reçois le message « Erreur : passer à l'étiquette du cas » dans mon instruction Switch ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-28 23:07:30872parcourir

Why am I Getting the

Diagnostic de « Erreur : passer à l'étiquette du cas » dans les instructions Switch

Lors de la compilation d'un programme qui utilise des instructions switch, les utilisateurs peuvent rencontrer l'erreur message : "Erreur : passer à l'étiquette du cas." Cette erreur survient généralement en raison de déclarations de variables égarées dans les blocs de cas de commutation.

Comprendre la portée des variables dans les cas de commutation

Les variables déclarées dans un bloc de cas de commutation restent accessibles dans les cas suivants blocs, même s’ils ne sont pas explicitement initialisés. Ce comportement peut conduire à des résultats inattendus si les variables ne sont pas correctement initialisées dans leurs blocs de cas respectifs.

Exemple de problème de portée de variable

Considérez l'extrait de code suivant, qui tente d'utiliser une variable déclarée dans un bloc case dans un bloc case suivant :

<code class="cpp">#include <iostream>
int main() {
    int choice;
    std::cin >> choice;
    switch (choice) {
    case 1:
        int i = 0;
        break;
    case 2:  // Error occurs here
    }
}</code>

Dans ce code, la variable i est déclarée et initialisée dans le bloc case 1. Cependant, si le choix est égal à 2, le compilateur tentera d'accéder à la variable i dans le bloc case 2, mais elle ne sera pas initialisée. Cela entraîne l'erreur « Aller à l'étiquette du cas ».

Solution : utiliser la portée des blocs dans les cas de commutation

Pour résoudre ce problème, vous devez entourer chaque bloc de cas de commutation. dans un bloc d'accolade explicite ({}). Cela limite la portée de toutes les variables déclarées dans un bloc de cas spécifique à ce bloc, empêchant l'accès des blocs de cas suivants.

<code class="cpp">#include <iostream>
int main() {
    int choice;
    std::cin >> choice;
    switch (choice) {
    case 1: {
        int i = 0;
        break;
    }
    case 2:
        int j = 10;
        break;
    }
}</code>

En utilisant la portée du bloc, vous vous assurez que la variable i n'est accessible et initialisée que dans le bloc case 1, et la variable j n'est accessible et initialisée que dans le bloc case 2. Cela crée une portée de variable appropriée et prévisible dans l'instruction switch.

En comprenant le comportement de la portée des variables dans les instructions switch et en utilisant la portée des blocs de manière appropriée, vous pouvez éviter l'erreur « Passer à l'étiquette du cas » et garantir l'initialisation correcte. et l'utilisation de variables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn