Maison >développement back-end >C++ >Pourquoi l'erreur « Aller à l'étiquette du cas » se produit-elle dans une instruction Switch ?

Pourquoi l'erreur « Aller à l'étiquette du cas » se produit-elle dans une instruction Switch ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 07:48:30358parcourir

Why Does

Résolution d'erreur : "Aller à l'étiquette du cas" dans l'instruction Switch

Dans l'extrait de code fourni :

< pre>

include

int main()
{

int choice;
std::cin >> choice;
switch(choice)
{
  case 1:
    int i=0;
    break;
  case 2: // error here 
}

}

L'erreur de compilation se produit car les variables déclarées dans une étiquette de cas sont accessibles dans les étiquettes de cas suivantes à moins qu'elles ne soient explicitement incluses dans un bloc.

Dans ce scénario, la variable que j'ai déclarée dans le cas 1 reste dans la portée du cas 2, mais son code d'initialisation n'est pas exécuté. L'accès à une variable non initialisée peut entraîner un comportement ou des erreurs inattendus.

Pour résoudre ce problème, placez chaque étiquette de cas dans son propre bloc :

<br> switch(choice)</p>
<pre class="brush:php;toolbar:false">{
  case 1:
    {
        int i=0;
        break;
    }
  case 2:
    {
        // Code for case 2
        break;
    }
}

Cela garantit que les variables déclarées dans un cas ne sont pas visibles ou accessibles en dehors de ce cas. Chaque cas a désormais son propre périmètre isolé, évitant ainsi les erreurs liées à la visibilité variable.

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