SORU
20 Mart 2012, Salı


Neden bu geçerli C

reddit Bu kod ile karşılaştım. Tip dönüşümleri bu neden olmuş geçersiz sanırdım.

int a[3] = { { {1, 2}, {3, 4}, 5, 6 }, {7, 8}, {9}, 10 };

Çınlama, skaler bir başlatıcı aşırı unsurları ve diş teli hakkında bazı uyarılar alıyorum. Ama a içeriğini [1, 7, 9].

Bu aslında meşru olduğunu, ve eğer varsa, biri neler olduğunu açıklayabilir mi?

CEVAP
20 Mart 2012, Salı


Aşırı unsurlar sadece göz ardı edilir. İki bölümü vardır6.7.8 Başlatmadeğer verdiğin. İlk paragraf 17:

Brace-kapalı her başlatıcı listesi ilişkili geçerli bir nesne var. Hiçbir belirtme vardır, subobjects geçerli nesne başlatıldı amacıyla göre türünün geçerli nesne: dizi öğelerini artan indis amacıyla, yapı üyeleri beyanname düzeni, ve ilk adlı üye bir sendika.

Bu bir 1, 7 ve 9 - O teller tarafından belirlenen alır geçerli nesne olsun açıklıyor. Daha sonra, paragraf 20: ekstralar hakkında hiçbir şey umurunda değil neden

... sadece yeterince başlatıcılar listeden önünde hesap için öğeleri veya üyelerinin subaggregate veya ilk üyesi bulunan birlik; kalan başlatıcılar kaldı başlatmak için bir sonraki öğe veya üye toplamak olan mevcut subaggregate veya içerdiği Birliği'nin bir parçası.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010
  • VOICE TV

    VOICE TV

    2 Aralık 2010