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

  • esnathesinger

    esnathesinge

    6 NİSAN 2009
  • Ordetta Price

    Ordetta Pric

    12 EYLÜL 2011
  • taliajoy18

    taliajoy18

    12 Temmuz 2011