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

  • DigitalRev TV

    DigitalRev T

    30 AĞUSTOS 2007
  • HowcastTechGadgets

    HowcastTechG

    22 EYLÜL 2010
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009