Maison > développement back-end > C++ > le corps du texte

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

Linda Hamilton
Libérer: 2024-10-29 04:19:29
original
565 Les gens l'ont consulté

Why Does

Erreur de saut à l'étiquette de cas dans les instructions Switch

Lorsque vous rencontrez l'erreur de compilation « Jump to case label », il faut examiner attentivement l'instruction switch. structure. Cette erreur se produit lorsqu'on tente de déclarer des variables dans un cas qui s'étendent aux cas suivants sans utiliser de délimiteur de bloc explicite, indiqué par des accolades ({ }).

Par exemple, considérons le code suivant :

<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 relying on the existence of i
    }
}</code>
Copier après la connexion

Dans cet exemple, le problème vient de la déclaration de i dans le cas 1. Bien que i soit visible dans le cas 2, il ne sera pas initialisé. En effet, le code d'initialisation est spécifique à chaque cas. Par conséquent, si le choix est 2, l'utilisation de i dans le code suivant pourrait conduire à des résultats inattendus.

Pour remédier à ce problème, utilisez un bloc explicite pour chaque cas :

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

Alternativement, on peut utiliser une instruction goto, analogue à l'instruction switch :

<code class="cpp">int main() {
    if(rand() % 2) // Toss a coin
        goto end;

    int i = 42;

  end:
    // Similar scope and initialization issues as with switch, but with goto
    std::cout << i;
}</code>
Copier après la connexion

Essentiellement, un bloc explicite ou une utilisation prudente de goto garantit que les déclarations de variables et l'initialisation sont localisées dans les cas prévus, évitant ainsi un comportement erroné.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!