Maison  >  Article  >  développement back-end  >  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
Barbara Streisandoriginal
2024-10-31 22:33:02893parcourir

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>

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>

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!

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