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

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • MusicDeluxeTV

    MusicDeluxeT

    14 Mayıs 2010