C++'da 'Vaka Etiketine Atlama Başlatma İşlemini Geçiyor' Hatası Nasıl Düzeltilir

C Da Vaka Etiketine Atlama Baslatma Islemini Geciyor Hatasi Nasil Duzeltilir



Switch ifadesi, kodun uzunluğunu azalttığı ve daha iyi netlik sağladığı için uzun if-else-if ifadesi için en iyi alternatiftir. Değer, switch ifadesi kullanılarak değerlendirilir ve her bir vaka etiketinin değerlerine göre test edilir. Eşleşme bulunursa kod aradan önce çalışır, aksi halde “varsayılan”dan sonra kodu çalıştırır.

C++'da 'Vaka Etiketine Atlama Başlatmayı Geçiyor' Hatasına Neden Olan Nedir?

Switch deyimini kullanırken, C++'da gözlemlenebilecek yaygın bir hata 'Vaka Etiketi Çaprazları Başlatmaya Atla'dır. Bu hata genellikle durum etiketi içindeki bir değişkenin yanlış bildirilmesi nedeniyle ortaya çıkar. C++ 'da 'Vaka Etiketine Atla Başlatma' Hatasını gösteren örnek bir program:







#include
#include
ad alanı std'sini kullanma;
geçersiz menu_display ( ) ;
int seçim_menu ( ) ;
geçersiz get_two_operands ( int & n, dahili & M ) ;
int ekle ( int n, int m ) ;
int çıkarma ( int n, int m ) ;


int ana ( )
{
int seçimi;

Yapmak
{
menu_display ( ) ;
seçim = seçim_menu ( ) ;
int x, y;
anahtar ( seçim )
{
dava 1 :

get_two_operands ( x,y ) ;
int toplam = ekle ( x, y ) ;
cout << X << '+' << Ve << ' = ' << toplam << sonunda;

kırmak ;

dava 2 :

get_two_operands ( x, y ) ;

int fark = çıkarma ( x,y ) ;
cout << X << '-' << Ve << ' = ' << fark << sonunda;

kırmak ;
varsayılan:;
}

} sırasında ( seçim ! = 3 ) ;

cout << 'Program sonlandırıldı' << sonunda;

geri dönmek 0 ;
}


geçersiz menu_display ( )
{
cout << sonunda;
cout << 'Temel Hesap Makinesi' << sonunda;
cout << ' 1. Ekle (+) ' << sonunda;
cout << ' 2. Çıkar (-) ' << sonunda;
cout << ' 3. Çıkış' << sonunda;

cout << sonunda;
}

int get_menu_choice ( )
{
int seçimi;
cout << 'Geçersiz Seçim Tekrar Deneyin: ' ;
yemek yiyor >> seçim;

sırasında ( ( ( seçim < 1 ) || ( seçim > 3 ) ) && ( ! cin.başarısız ( ) ) )
{
cout << ': ' ;
yemek yiyor >> seçim;
}
eğer ( cin.başarısız ( ) )
{
cout << 'Hata ' << sonunda;
çıkış ( 1 ) ;
}
geri dönmek seçim;
}

geçersiz get_two_operands ( int & n, dahili & M )
{
cout << 'İki işlenen verin' << sonunda;
cout << 'İlk İşlenen: ' ;
yemek yiyor >> N;
cout << 'İkinci İşlenen : ' ;
yemek yiyor >> M;

}


int ekle ( int n, int m )
{
geri dönmek ( n + m ) ;
}

int çıkarma ( int n, int m )
{
geri dönmek ( n-m ) ;
}


Bu program çalıştırıldığında 'Kutu Etiketine Atla' hatası verir. Bu bir derleme hatasıdır.



Bu hata, değişkenin case ifadesi içindeki parantez olmadan bildirilmesi nedeniyle ortaya çıkar. Kasa sadece bir etiket olduğundan, altında yazılan parametrelerin kullanılabilirliğini kısıtlama özelliğine sahip değildir. Yukarıdaki kod yürütüldüğünde, durum 1'in değişkenlerine durum 2 tarafından erişilebilir ve bu, başlatılmamış olarak görünecek ve hatalara yol açacaktır.







C++'da 'Vaka Etiketine Atlama Başlatma İşlemini Geçiyor' Hatası Nasıl Düzeltilir

Bu hata, kapalı bir kapsam oluşturacak ve farklı vaka bloklarının parametreleri değiştirilmeyecek olan vaka bloğu içindeki parantezlerin kullanılmasıyla düzeltilebilir.

Hata Ayıklanmış Kod

Bu, yukarıdaki hatanın ayıklanmış kodudur. Hata, verilerin parantez içindeki durumların altına alınmasıyla düzeltilir:



#include
#include
ad alanı std'sini kullanma;
geçersiz menu_display ( ) ;
int seçim_menu ( ) ;
geçersiz get_two_operands ( int & n, dahili & M ) ;
int ekle ( int n, int m ) ;
int çıkarma ( int n, int m ) ;


int ana ( )
{
int seçimi;

Yapmak
{
menu_display ( ) ;
seçim = seçim_menu ( ) ;
int x, y;
anahtar ( seçim )
{
dava 1 :
{
get_two_operands ( x, y ) ;
int toplam = ekle ( x, y ) ;
cout << X << '+' << Ve << ' = ' << toplam << sonunda;
}
kırmak ;
dava 2 :
{
get_two_operands ( x, y ) ;
int fark = çıkarma ( x,y ) ;
cout << X << '-' << Ve << ' = ' << fark << sonunda;
}
kırmak ;
varsayılan:;
}

} sırasında ( seçim ! = 3 ) ;

cout << 'Program sonlandırıldı' << sonunda;

geri dönmek 0 ;
}


geçersiz menu_display ( )
{
cout << sonunda;
cout << 'Temel Hesap Makinesi' << sonunda;
cout << ' 1. Ekle (+) ' << sonunda;
cout << ' 2. Çıkar (-) ' << sonunda;
cout << ' 3. Çıkış' << sonunda;
cout << sonunda;
}

int seçim_menu ( )
{
int seçimi;
cout << 'İşlemi Seçin: ' ;
yemek yiyor >> seçim;

sırasında ( ( ( seçim < 1 ) || ( seçim > 3 ) ) && ( ! cin.başarısız ( ) ) )
{
cout << 'Geçersiz Seçim Tekrar Deneyin: ' ;
yemek yiyor >> seçim;
}
eğer ( cin.başarısız ( ) )
{
cout << 'Hata' << sonunda;
çıkış ( 1 ) ;
}
geri dönmek seçim;
}

geçersiz get_two_operands ( int & n, dahili & M )
{
cout << 'İki işlenen verin' << sonunda;
cout << 'İlk İşlenen: ' ;
yemek yiyor >> N;
cout << 'İkinci İşlenen : ' ;
yemek yiyor >> M;

}


int ekle ( int n, int m )
{
geri dönmek ( n + m ) ;
}

int çıkarma ( int n, int m )
{
geri dönmek ( n-m ) ;
}


Kodun büyük/küçük harf bloklarında parantezlerin kullanılmasından sonra hata düzeltildi ve çıktı görüntülendi:

Çözüm

Switch ifadesi, kodun uzunluğunu azalttığı ve daha iyi netlik sağladığı için uzun if-else-if ifadesi için en iyi alternatiftir. Switch deyimini kullanırken, C++'da gözlemlenebilecek yaygın bir derleme hatası 'Vaka Etiketi Çapraz Başlatma'ya Atla'dır. Bu hata genellikle durum etiketi içindeki bir değişkenin yanlış bildirilmesi nedeniyle ortaya çıkar. Bu durum, büyük harf bloklarının altındaki verilerin etrafındaki parantezlerin kullanılmasıyla düzeltilebilir.