SORU
29 EYLÜL 2012, CUMARTESİ


Bu durumun bir parçası olarak bir değişken tanımlama-açıklama mı?

Bu izin, o sadece şok oldum,:

if( int* x = new int( 20 ) )
{
    std::cout << *x << "!\n";
    // delete x;
}
else
{
    std::cout << *x << "!!!\n";
    // delete x;
}
// std:cout << *x; // error - x is not defined in this scope

Bu standart tarafından izin verilen veya sadece bir derleyici uzantısı değil mi?


Birkaç yokmuş Gibi P. S. bu konuda yorumlar - lütfengörmezdenbu örnek, "kötü" ya da tehlikeli. Ne olduğunu biliyorum. Bu benim aklıma gelen ilk şey, örnek olarak.

CEVAP
29 EYLÜL 2012, CUMARTESİ


Bu C 98'den beri belirtimi tarafından izin verilir.

Bölüm 6.4 "Seçim tablolar":

Bir isim tarafından sunulan bir bildiride bir durum (ya da yürürlüğe giren tip-belirleyici-seq veya Bildiricisi durumu) kapsamında noktasına ilanı sonuna kadar substatements tarafından kontrol edilen durum.

Aşağıdaki örnek, aynı bölümden

if (int x = f()) {
    int x;    // ill-formed, redeclaration of x
}
else {
    int x;    // ill-formed, redeclaration of x
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • akalyne

    akalyne

    13 Mayıs 2009
  • Droid Life

    Droid Life

    17 Kasım 2009
  • Tahir Jahi

    Tahir Jahi

    6 Mart 2006