Comment corriger l'erreur « Passer à l'initialisation des croisements d'étiquettes de cas » en C++

Comment Corriger L Erreur Passer A L Initialisation Des Croisements D Etiquettes De Cas En C



L'instruction switch est la meilleure alternative à l'instruction longue if-else-if, car elle réduit la longueur du code et apporte une meilleure clarté. La valeur est évaluée à l'aide de l'instruction switch et est testée par rapport aux valeurs de chaque étiquette de cas. Si la correspondance est trouvée, le code s'exécute avant la pause, sinon, il exécute le code après le « par défaut ».

Quelles sont les causes de l’erreur « Aller à l’initialisation des croisements d’étiquettes de cas » en C++

Lors de l'utilisation de l'instruction switch, en C++, une erreur courante qui peut être observée est « Passer à l'initialisation des croisements d'étiquettes de cas ». Cette erreur apparaît généralement en raison de la déclaration incorrecte d'une variable dans l'étiquette du cas. Voici un exemple de programme pour démontrer l’erreur « Passer à l’initialisation des croix d’étiquette de cas » en C++ :







#include
#inclure
en utilisant l'espace de noms std ;
annuler menu_display ( ) ;
int choix_menu ( ) ;
annuler get_two_operands ( int & n, entier & m ) ;
int ajouter ( int n, int m ) ;
int soustraire ( int n, int m ) ;


int main ( )
{
sélection entière ;

faire
{
menu_affichage ( ) ;
sélection = choix_menu ( ) ;
entier x, y ;
changer ( sélection )
{
cas 1 :

get_two_operands ( x, y ) ;
int somme = ajouter ( x,y ) ;
cout << X << '+' << et << ' = ' << somme << fin;

casser ;

cas 2 :

get_two_operands ( x, y ) ;

int différence = soustraire ( x,y ) ;
cout << X << '-' << et << ' = ' << différence << fin;

casser ;
défaut:;
}

} alors que ( sélection ! = 3 ) ;

cout << 'Programme terminé' << fin;

retour 0 ;
}


annuler menu_display ( )
{
cout << fin;
cout << ' Calculatrice de base ' << fin;
cout << ' 1. Ajouter (+) ' << fin;
cout << ' 2. Soustraire (-) ' << fin;
cout << ' 3. Sortir' << fin;

cout << fin;
}

int get_menu_choice ( )
{
choix int;
cout << « Choix non valide, réessayez : » ;
manger >> sélection;

alors que ( ( ( sélection < 1 ) || ( sélection > 3 ) ) && ( ! cin.fail ( ) ) )
{
cout << ' : ' ;
manger >> sélection;
}
si ( cin.fail ( ) )
{
cout << 'Erreur ' << fin;
sortie ( 1 ) ;
}
retour sélection;
}

annuler get_two_operands ( int & n, entier & m )
{
cout << 'Donnez deux opérandes' << fin;
cout << 'Premier opérande : ' ;
manger >> n;
cout << 'Deuxième opérande : ' ;
manger >> m;

}


int ajouter ( int n, int m )
{
retour ( n + m ) ;
}

int soustraire ( int n, int m )
{
retour ( n-m ) ;
}


Lorsque ce programme est exécuté, il renvoie une erreur « Jump to Case Label ». Il s'agit d'une erreur de compilation.



Cette erreur apparaît en raison de la déclaration de la variable dans une instruction case sans les crochets. Le boîtier n'est qu'une étiquette, il n'a donc pas la capacité de restreindre la disponibilité des paramètres écrits en dessous. Lorsque le code ci-dessus est exécuté, les variables du cas 1 sont accessibles par le cas 2, et elles apparaîtront comme non initialisées, ce qui entraînera des erreurs.







Comment corriger l'erreur « Passer à l'initialisation des croisements d'étiquettes de cas » en C++

Cette erreur peut être corrigée en utilisant des crochets à l'intérieur du bloc de cas, ce qui créera une portée fermée et les paramètres des différents blocs de cas ne seront pas manipulés.

Code débogué

Il s'agit du code débogué pour l'erreur ci-dessus. L'erreur est corrigée en plaçant les données sous les cas entre parenthèses :



#include
#inclure
en utilisant l'espace de noms std ;
annuler menu_display ( ) ;
int choix_menu ( ) ;
annuler get_two_operands ( int & n, entier & m ) ;
int ajouter ( int n, int m ) ;
int soustraire ( int n, int m ) ;


int main ( )
{
sélection entière ;

faire
{
menu_affichage ( ) ;
sélection = choix_menu ( ) ;
entier x, y ;
changer ( sélection )
{
cas 1 :
{
get_two_operands ( x,y ) ;
int somme = ajouter ( x,y ) ;
cout << X << '+' << et << ' = ' << somme << fin;
}
casser ;
cas 2 :
{
get_two_operands ( x,y ) ;
int différence = soustraire ( x,y ) ;
cout << X << '-' << et << ' = ' << différence << fin;
}
casser ;
défaut:;
}

} alors que ( sélection ! = 3 ) ;

cout << 'Programme terminé' << fin;

retour 0 ;
}


annuler menu_display ( )
{
cout << fin;
cout << ' Calculatrice de base ' << fin;
cout << ' 1. Ajouter (+) ' << fin;
cout << ' 2. Soustraire (-) ' << fin;
cout << ' 3. Sortir' << fin;
cout << fin;
}

int choix_menu ( )
{
sélection entière ;
cout << « Choisissez l'opération : » ;
manger >> sélection;

alors que ( ( ( sélection < 1 ) || ( sélection > 3 ) ) && ( ! cin.fail ( ) ) )
{
cout << « Choix non valide, réessayez : » ;
manger >> sélection;
}
si ( cin.fail ( ) )
{
cout << 'Erreur' << fin;
sortie ( 1 ) ;
}
retour sélection;
}

annuler get_two_operands ( int & n, entier & m )
{
cout << 'Donnez deux opérandes' << fin;
cout << 'Premier opérande : ' ;
manger >> n;
cout << 'Deuxième opérande : ' ;
manger >> m;

}


int ajouter ( int n, int m )
{
retour ( n + m ) ;
}

int soustraire ( int n, int m )
{
retour ( n-m ) ;
}


Après l'utilisation de crochets englobants dans les blocs de casse du code, l'erreur a été corrigée et le résultat s'affiche :

Conclusion

L'instruction switch est la meilleure alternative à l'instruction longue if-else-if, car elle réduit la longueur du code et apporte une meilleure clarté. Lors de l'utilisation de l'instruction switch, en C++, une erreur de compilation courante qui peut être observée est « Aller à l'initialisation des croisements d'étiquettes de cas ». Cette erreur apparaît généralement en raison de la déclaration incorrecte d'une variable dans l'étiquette du cas. Cela peut être résolu en utilisant des crochets autour des données sous les blocs de cas.