SORU
17 Kasım 2013, Pazar


{} Kullanarak büyük bir tablo. Neden?

case deyim { } kullanarak nokta nedir? Normalde, pek çok çizgiler var case ifadesi ne kadar açık olursa olsun, tüm satırlar çalıştırılır. Bu sadece bir kural daha eski/daha yeni Derleyiciler ya da bunun arkasında bir şey var ile ilgili?

int a = 0;
switch (a) {
  case 0:{
    std::cout << "line1\n";
    std::cout << "line2\n";
    break;
  }
}

ve

int a = 0;
switch (a) {
  case 0:
    std::cout << "line1\n";
    std::cout << "line2\n";
    break;
}

CEVAP
17 Kasım 2013, Pazar


{} yeni bir blok gösterirkapsam.

Çok yapmacık aşağıdaki örneği ele alalım

switch (a)
{
    case 42:
        int x = GetSomeValue();
        return a * x;
    case 1337:
        int x = GetSomeOtherValue(); //ERROR
        return a * x;
}

x zaten kapsam olarak tanımlanır, çünkü derleyici hatası alırsınız.

Alt-kapsam kendilerine bu ayıran switch deyimi dışında x ilan için ihtiyacı ortadan kaldırır.

switch (a)
{
    case 42: {
        int x = GetSomeValue();
        return a * x; 
    }
    case 1337: {
        int x = GetSomeOtherValue(); //OK
        return a * x; 
    }
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AndyMcMillinTV

    AndyMcMillin

    6 HAZİRAN 2007
  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • How Things Are Made

    How Things A

    17 HAZİRAN 2008