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ş:
Bir işlevi onları yaratan daha büyük k...
Neden bu kod rastgele dizeleri yazdırm...
Neden karma tablo üzerinde Sözlük terc...
Neden bu (kullanarak ) tanımsız davran...
Neden Python karşılaştırma dizeleri ku...