Maison > développement back-end > C++ > Pourquoi mon instruction Switch génère-t-elle une erreur « Aller à l'étiquette du cas » ?

Pourquoi mon instruction Switch génère-t-elle une erreur « Aller à l'étiquette du cas » ?

Patricia Arquette
Libérer: 2024-10-29 07:43:02
original
959 Les gens l'ont consulté

Why Does My Switch Statement Throw a

Erreur de saut de cas d'instruction Switch

Lorsque vous travaillez avec des instructions switch, il est possible de rencontrer l'erreur de compilation suivante :

Erreur : passer à l'étiquette du cas.

Cette erreur se produit lorsque vous tentez d'accéder directement à une étiquette de cas sans gérer correctement la portée des variables déclarées.

Considérez le code suivant extrait :

<code class="cpp">#include <iostream>
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 cet exemple, l'erreur se produit dans le deuxième cas car la variable que j'ai déclarée dans le premier cas est visible dans les cas suivants. Cependant, comme il n'y a pas de bloc explicite entourant le premier cas, je ne serai pas initialisé dans le second cas.

Pour résoudre ce problème, le premier cas doit être enveloppé dans un bloc explicite :

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

En déclarant i dans le bloc, sa portée est limitée au premier cas, empêchant son utilisation accidentelle dans le second cas.

Ceci est important car les variables déclarées dans un cas sont toujours accessibles dans les cas suivants. , mais leur initialisation n'aura lieu que si le cas les initialise explicitement. L'emballage des cas dans des blocs explicites garantit une portée et une initialisation appropriées des variables, évitant ainsi l'erreur « passer à l'étiquette du cas ».

Explication supplémentaire :

Les instructions Switch utilisent une table de saut pour déterminer rapidement quel cas exécuter. Lorsqu'un cas est rencontré, le contrôle passe à la cible de saut correspondante, qui contient le code de ce cas. Cependant, si le cas ne déclare pas explicitement ses variables dans un bloc, les variables des cas précédents peuvent rester accessibles, conduisant potentiellement à un comportement inattendu si elles ne sont pas correctement initialisées.

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