Come correggere l'errore 'Salta all'etichetta del caso incrocia l'inizializzazione' in C++

Come Correggere L Errore Salta All Etichetta Del Caso Incrocia L Inizializzazione In C



L'istruzione switch è la migliore alternativa all'istruzione if-else-if lunga, poiché riduce la lunghezza del codice e apporta maggiore chiarezza. Il valore viene valutato utilizzando l'istruzione switch e viene testato rispetto ai valori di ciascuna etichetta case. Se viene trovata la corrispondenza, il codice viene eseguito prima dell'interruzione, altrimenti esegue il codice dopo il 'default'.

Quali sono le cause dell'errore 'Salta all'etichetta del caso incrocia l'inizializzazione' in C++

Durante l'utilizzo dell'istruzione switch, in C++ un errore comune che può essere osservato è 'Salta all'inizializzazione delle croci dell'etichetta del caso'. Questo errore solitamente appare a causa della dichiarazione errata di una variabile all'interno dell'etichetta del caso. Ecco un programma di esempio per dimostrare l'errore 'Salta all'etichetta del caso incrocia l'inizializzazione' in C++:







#include
#include
utilizzando lo spazio dei nomi std;
void menu_display ( ) ;
int menu_scelta ( ) ;
void get_two_operandi ( int & n, int & M ) ;
int aggiungi ( intero n, intero m ) ;
int sottrai ( intero n, intero m ) ;


int principale ( )
{
selezione intera;

Fare
{
menu_display ( ) ;
selezione = menu_scelta ( ) ;
intero x, y;
interruttore ( selezione )
{
caso 1 :

get_two_operandi ( x, y ) ;
int somma = aggiungere ( x, y ) ;
cout << X << '+' << E << ' = ' << somma << fine;

rottura ;

caso 2 :

get_two_operandi ( x, y ) ;

int diff = sottrarre ( x,y ) ;
cout << X << '-' << E << ' = ' << diff << fine;

rottura ;
predefinito:;
}

} Mentre ( selezione ! = 3 ) ;

cout << 'Programma terminato' << fine;

ritorno 0 ;
}


void menu_display ( )
{
cout << fine;
cout << 'Calcolatrice di base' << fine;
cout << ' 1. Aggiungi (+) ' << fine;
cout << ' 2. Sottrai (-) ' << fine;
cout << ' 3. Esci' << fine;

cout << fine;
}

int get_menu_choice ( )
{
scelta intera;
cout << 'Scelta non valida Riprova: ' ;
mangiare >> selezione;

Mentre ( ( ( selezione < 1 ) || ( selezione > 3 ) ) && ( ! cin.fail ( ) ) )
{
cout << ': ' ;
mangiare >> selezione;
}
Se ( cin.fail ( ) )
{
cout << 'Errore' << fine;
Uscita ( 1 ) ;
}
ritorno selezione;
}

void get_two_operandi ( int & n, int & M )
{
cout << 'Dai due operandi' << fine;
cout << 'Primo operando: ' ;
mangiare >> N;
cout << 'Secondo operando: ' ;
mangiare >> M;

}


int aggiungi ( intero n, intero m )
{
ritorno ( n+m ) ;
}

int sottrai ( intero n, intero m )
{
ritorno ( n-m ) ;
}


Quando questo programma viene eseguito, restituisce un errore 'Salta all'etichetta del caso'. Si tratta di un errore di compilazione.



Questo errore appare a causa della dichiarazione della variabile all'interno di un'istruzione case senza parentesi quadre. Il case è solo un'etichetta, quindi non ha la capacità di limitare la disponibilità dei parametri scritti sotto di esso. Quando viene eseguito il codice precedente, è possibile accedere alle variabili del caso 1 tramite il caso 2 e apparirà come non inizializzato, causando errori.







Come correggere l'errore 'Salta all'etichetta del caso incrocia l'inizializzazione' in C++

Questo errore può essere corretto utilizzando parentesi all'interno del blocco case, che creeranno un ambito racchiuso e i parametri dei diversi blocchi case non verranno manipolati.

Codice debuggato

Questo è il codice di cui è stato eseguito il debug per l'errore precedente. L'errore viene corretto racchiudendo i dati sotto casi tra parentesi:



#include
#include
utilizzando lo spazio dei nomi std;
void menu_display ( ) ;
int menu_scelta ( ) ;
void get_two_operandi ( int & n, int & M ) ;
int aggiungi ( intero n, intero m ) ;
int sottrai ( intero n, intero m ) ;


int principale ( )
{
selezione intera;

Fare
{
menu_display ( ) ;
selezione = menu_scelta ( ) ;
intero x, y;
interruttore ( selezione )
{
caso 1 :
{
get_two_operandi ( x,y ) ;
int somma = aggiungere ( x, y ) ;
cout << X << '+' << E << ' = ' << somma << fine;
}
rottura ;
caso 2 :
{
get_two_operandi ( x, y ) ;
int diff = sottrarre ( x, y ) ;
cout << X << '-' << E << ' = ' << diff << fine;
}
rottura ;
predefinito:;
}

} Mentre ( selezione ! = 3 ) ;

cout << 'Programma terminato' << fine;

ritorno 0 ;
}


void menu_display ( )
{
cout << fine;
cout << 'Calcolatrice di base' << fine;
cout << ' 1. Aggiungi (+) ' << fine;
cout << ' 2. Sottrai (-) ' << fine;
cout << ' 3. Esci' << fine;
cout << fine;
}

int menu_scelta ( )
{
selezione intera;
cout << 'Scegli l'operazione:' ;
mangiare >> selezione;

Mentre ( ( ( selezione < 1 ) || ( selezione > 3 ) ) && ( ! cin.fail ( ) ) )
{
cout << 'Scelta non valida Riprova: ' ;
mangiare >> selezione;
}
Se ( cin.fail ( ) )
{
cout << 'Errore' << fine;
Uscita ( 1 ) ;
}
ritorno selezione;
}

void get_two_operandi ( int & n, int & M )
{
cout << 'Dai due operandi' << fine;
cout << 'Primo operando: ' ;
mangiare >> N;
cout << 'Secondo operando: ' ;
mangiare >> M;

}


int aggiungi ( intero n, intero m )
{
ritorno ( n+m ) ;
}

int sottrarre ( intero n, intero m )
{
ritorno ( n-m ) ;
}


Dopo l'utilizzo delle parentesi quadre nei blocchi case del codice, l'errore è stato corretto e viene visualizzato l'output:

Conclusione

L'istruzione switch è la migliore alternativa all'istruzione if-else-if lunga, poiché riduce la lunghezza del codice e apporta maggiore chiarezza. Durante l'utilizzo dell'istruzione switch, in C++ un errore di compilazione comune che può essere osservato è 'Salta all'inizializzazione delle croci dell'etichetta del caso'. Questo errore solitamente appare a causa della dichiarazione errata di una variabile all'interno dell'etichetta del caso. Questo problema può essere risolto utilizzando parentesi quadre attorno ai dati sotto i blocchi case.