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

  • mist64

    mist64

    30 Mayıs 2006
  • multimediaGEEKS LLC

    multimediaGE

    3 Mayıs 2010
  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013