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

  • CaptainDisillusion

    CaptainDisil

    18 EYLÜL 2007
  • H3Ctic (old channel)

    H3Ctic (old

    23 Mart 2011
  • Madeon

    Madeon

    31 Ocak 2010