SORU
18 EYLÜL 2008, PERŞEMBE


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
18 EYLÜL 2008, PERŞEMBE


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;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BradleyWuzHere

    BradleyWuzHe

    25 NİSAN 2011
  • Bratayley

    Bratayley

    30 Aralık 2010
  • EmbarkToHeaven

    EmbarkToHeav

    3 EYLÜL 2007