Maison > développement back-end > C++ > Pourquoi est-ce que j'obtiens une erreur « Aller à l'étiquette du cas » dans mon instruction de commutateur C et comment puis-je la corriger ?

Pourquoi est-ce que j'obtiens une erreur « Aller à l'étiquette du cas » dans mon instruction de commutateur C et comment puis-je la corriger ?

Barbara Streisand
Libérer: 2024-10-31 22:33:02
original
1001 Les gens l'ont consulté

Why do I get a

Dépannage des erreurs d'étiquette de saut d'instruction Switch

En C, l'utilisation d'instructions switch conduit souvent à des erreurs de compilation telles que "Jump to case label". Cela se produit lorsqu'une variable déclarée dans un cas est accédée par inadvertance dans un cas ultérieur.

Considérez le code suivant :

<code class="cpp">int main() {
    int choice;
    std::cin >> choice;
    switch (choice) {
      case 1:
        int i = 0;
        break;
      case 2: // error here
    }
}</code>
Copier après la connexion

Dans ce cas, l'erreur du compilateur se produit car la variable i est déclaré dans le cas 1. Cependant, il est accessible dans le cas 2 même s'il n'est pas initialisé.

Pour résoudre ce problème, placez l'étiquette du cas entre accolades { }. Cela garantit que la variable n'est accessible que dans le cadre du cas où elle est initialisée.

<code class="cpp">int main() {
    int choice;
    std::cin >> choice;
    switch (choice) {
      case 1: {
        int i = 0;
        break;
      }
      case 2:
        break;
    }
}</code>
Copier après la connexion

Essentiellement, les instructions switch utilisent des instructions goto pour accéder à des cas spécifiques. Si une variable est déclarée dans un cas et que l'instruction passe à un autre cas, la variable existe toujours mais ne peut pas être initialisée. L'utilisation d'accolades crée une portée distincte pour chaque cas, isolant ses 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal