Cara Memperbaiki Kesalahan 'Langsung ke Inisialisasi Persilangan Label Kasus' di C++

Cara Memperbaiki Kesalahan Langsung Ke Inisialisasi Persilangan Label Kasus Di C



Pernyataan switch adalah alternatif terbaik untuk pernyataan if-else-if yang panjang, karena pernyataan ini mengurangi panjang kode dan memberikan kejelasan yang lebih baik. Nilai dievaluasi menggunakan pernyataan switch dan diuji terhadap nilai setiap label kasus. Jika kecocokan ditemukan, kode akan dieksekusi sebelum jeda, jika tidak, kode akan dieksekusi setelah 'default'.

Apa Penyebab Kesalahan 'Langsung ke Inisialisasi Lintas Label Kasus' di C++

Saat menggunakan pernyataan switch, di C++ kesalahan umum yang mungkin diamati adalah 'Langsung ke Inisialisasi Persilangan Label Kasus'. Kesalahan ini biasanya muncul karena kesalahan deklarasi suatu variabel dalam label huruf besar-kecil. Berikut adalah contoh program untuk mendemonstrasikan Kesalahan 'Langsung ke Inisialisasi Lintas Label Kasus' di C++:







#termasuk
#sertakan
menggunakan namespace std;
batal menu_tampilan ( ) ;
int pilihan_menu ( ) ;
batalkan get_two_operands ( ke dalam & n, ke dalam & M ) ;
ke dalam tambahkan ( ke dalam n, ke dalam m ) ;
int kurangi ( ke dalam n, ke dalam m ) ;


ke utama ( )
{
seleksi int;

Mengerjakan
{
menu_tampilan ( ) ;
pilihan = pilihan_menu ( ) ;
ke dalam x, y;
mengalihkan ( pilihan )
{
kasus 1 :

get_two_operand ( x, y ) ;
ke dalam jumlah = tambahkan ( x, y ) ;
cout << X << '+' << Dan << ' = ' << jumlah << akhir;

merusak ;

kasus 2 :

get_two_operand ( x, y ) ;

ke dalam berbeda = kurangi ( x, y ) ;
cout << X << '-' << Dan << ' = ' << berbeda << akhir;

merusak ;
bawaan:;
}

} ketika ( pilihan ! = 3 ) ;

cout << 'Program Dihentikan' << akhir;

kembali 0 ;
}


batal menu_tampilan ( )
{
cout << akhir;
cout << 'Kalkulator Dasar' << akhir;
cout << ' 1. Tambahkan (+) ' << akhir;
cout << ' 2. Kurangi (-) ' << akhir;
cout << ' 3. Keluar' << akhir;

cout << akhir;
}

ke dalam get_menu_choice ( )
{
ke dalam pilihan;
cout << 'Pilihan Tidak Valid Coba Lagi:' ;
makan >> pilihan;

ketika ( ( ( pilihan < 1 ) || ( pilihan > 3 ) ) && ( ! cin.gagal ( ) ) )
{
cout << ':' ;
makan >> pilihan;
}
jika ( cin.gagal ( ) )
{
cout << 'Kesalahan' << akhir;
KELUAR ( 1 ) ;
}
kembali pilihan;
}

batalkan get_two_operands ( ke dalam & n, ke dalam & M )
{
cout << 'Berikan dua operan' << akhir;
cout << 'Operan Pertama:' ;
makan >> N;
cout << 'Operan Kedua:' ;
makan >> M;

}


ke dalam tambahkan ( ke dalam n, ke dalam m )
{
kembali ( n + m ) ;
}

int kurangi ( ke dalam n, ke dalam m )
{
kembali ( n - m ) ;
}


Ketika program ini dijalankan, ia mengembalikan kesalahan 'Lompat ke Label Kasus'. Ini adalah kesalahan kompilasi.



Kesalahan ini muncul karena deklarasi variabel di dalam pernyataan case tanpa tanda kurung siku. Kasingnya hanyalah sebuah label, sehingga tidak memiliki kemampuan untuk membatasi ketersediaan parameter yang tertulis di bawahnya. Ketika kode di atas dijalankan, variabel kasus 1 dapat diakses oleh kasus 2, dan variabel tersebut akan tampak tidak diinisialisasi sehingga menyebabkan kesalahan.







Cara Memperbaiki Kesalahan 'Langsung ke Inisialisasi Persilangan Label Kasus' di C++

Kesalahan ini dapat diperbaiki dengan menggunakan tanda kurung di dalam blok kasus, yang akan membuat cakupan tertutup dan parameter dari blok kasus yang berbeda tidak akan dimanipulasi.

Kode yang Di-debug

Ini adalah kode debug untuk kesalahan di atas. Kesalahan diperbaiki dengan menyertakan data dalam kasus di dalam tanda kurung:



#termasuk
#sertakan
menggunakan namespace std;
batal menu_tampilan ( ) ;
int pilihan_menu ( ) ;
batalkan get_two_operands ( ke dalam & n, ke dalam & M ) ;
ke dalam tambahkan ( ke dalam n, ke dalam m ) ;
int kurangi ( ke dalam n, ke dalam m ) ;


ke utama ( )
{
seleksi int;

Mengerjakan
{
menu_tampilan ( ) ;
pilihan = pilihan_menu ( ) ;
ke dalam x, y;
mengalihkan ( pilihan )
{
kasus 1 :
{
get_two_operand ( x, y ) ;
ke dalam jumlah = tambahkan ( x, y ) ;
cout << X << '+' << Dan << ' = ' << jumlah << akhir;
}
merusak ;
kasus 2 :
{
get_two_operand ( x, y ) ;
ke dalam berbeda = kurangi ( x, y ) ;
cout << X << '-' << Dan << ' = ' << berbeda << akhir;
}
merusak ;
bawaan:;
}

} ketika ( pilihan ! = 3 ) ;

cout << 'Program Dihentikan' << akhir;

kembali 0 ;
}


batal menu_tampilan ( )
{
cout << akhir;
cout << 'Kalkulator Dasar' << akhir;
cout << ' 1. Tambahkan (+) ' << akhir;
cout << ' 2. Kurangi (-) ' << akhir;
cout << ' 3. Keluar' << akhir;
cout << akhir;
}

int pilihan_menu ( )
{
seleksi int;
cout << 'Pilih Operasi:' ;
makan >> pilihan;

ketika ( ( ( pilihan < 1 ) || ( pilihan > 3 ) ) && ( ! cin.gagal ( ) ) )
{
cout << 'Pilihan Tidak Valid Coba Lagi:' ;
makan >> pilihan;
}
jika ( cin.gagal ( ) )
{
cout << 'Kesalahan' << akhir;
KELUAR ( 1 ) ;
}
kembali pilihan;
}

batalkan get_two_operands ( ke dalam & n, ke dalam & M )
{
cout << 'Berikan dua operan' << akhir;
cout << 'Operan Pertama:' ;
makan >> N;
cout << 'Operan Kedua:' ;
makan >> M;

}


ke dalam tambahkan ( ke dalam n, ke dalam m )
{
kembali ( n + m ) ;
}

int kurangi ( ke dalam n, ke dalam m )
{
kembali ( n - m ) ;
}


Setelah penggunaan tanda kurung siku pada blok kasus kode, kesalahan telah diperbaiki dan output ditampilkan:

Kesimpulan

Pernyataan switch adalah alternatif terbaik untuk pernyataan if-else-if yang panjang, karena mengurangi panjang kode dan memberikan kejelasan yang lebih baik. Saat menggunakan pernyataan switch, dalam C++ kesalahan kompilasi umum yang mungkin diamati adalah 'Langsung ke Inisialisasi Persilangan Label Kasus'. Kesalahan ini biasanya muncul karena kesalahan deklarasi variabel dalam label huruf besar-kecil. Hal ini dapat diperbaiki dengan menggunakan tanda kurung di sekitar data di bawah blok kasus.