Neden't değişkenleri bir switch ifadesi bildirilebilir?
Her zaman bu neden bir switch deyiminde case etiketinden sonra değişken olabilir mi? merak ettim C değişkenleri hemen hemen her yerde (ve onları ilk kullanımda yakın ilan belli ki iyi bir şeydir) bildirebilirsiniz, ancak aşağıdaki hala çalışmıyor:
switch (val)
{
case VAL:
// This won't work
int newVal = 42;
break;
case ANOTHER_VAL:
...
break;
}
Yukarıda bana aşağıdaki hata verir (yüksek lisans):
'atlanan' dava 'etiket.' newVal başlatma
Bu diğer dillerde de bir sınırlama gibi görünüyor. Neden böyle bir sorun mu var?
CEVAP
Case ifadeleri, sadece 'etiketler'. Bu derleyici doğrudan bir etiket için bir atlama olarak yorumlamak anlamına gelir. C , burada sorun kapsam biridir. Kıvırcık parantez her şeyin kapsamını tanımlamak 'geçiş' deyim. içinde Bu bir atlama daha fazla koda başlatma atlama gerçekleştirileceği bir kapsam ile sol anlamına gelir. Bu işlemek için doğru yolu bir kapsamı olan dava dilekçesi için belirli tanımlamak ve bunun içinde değişken tanımlamak için.
switch (val)
{
case VAL:
{
// This will work
int newVal = 42;
break;
}
case ANOTHER_VAL:
...
break;
}
Neden android en'değişkenleri m i...
Neden sadece son değişkenleri anonim s...
Neden yerel değişkenleri başlatma, ama...
Neden varsayılan arayüz değişkenleri s...
Neden't değişkenleri " olarak ila...