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

  • B4ROK

    B4ROK

    1 EKİM 2008
  • Attempts at least

    Attempts at

    1 Ocak 2007
  • njhaley

    njhaley

    24 NİSAN 2006