2012-12-10 23 views

risposta

12

Gli altri valori verranno inizializzati; da C11 standard §6.7.9 Inizializzazione, ¶19 e ¶21:

L'inizializzazione si procede in ordine lista di inizializzazione, ogni inizializzatore previsto un particolare sottoggetti override qualsiasi inizializzatore precedentemente elencate per lo stesso subobject; 151) tutti i sottooggetti non inizializzati in modo esplicito devono essere inizializzati implicitamente come oggetti con durata di archiviazione statica.

151) Qualsiasi inizializzatore per il sottobject che è stato sovrascritto e quindi non utilizzato per inizializzare il subobject potrebbe non essere valutato affatto.


Se ci sono meno inizializzatori in una lista tra graffe racchiuso che ci sono elementi o membri di un aggregato o meno caratteri in una stringa letterale utilizzati per inizializzare un array di dimensione nota che ci sono elementi nel array, il resto dell'aggregato deve essere inizializzato implicitamente come oggetti con durata di archiviazione statica.

E inizializzata int con durata di conservazione statica sono implicitamente inizializzati a zero; stessa sezione, 10:

Se un oggetto con durata di memorizzazione automatica non è inizializzato in modo esplicito, il suo valore è indeterminato. Se un oggetto con durata di memorizzazione statica o di thread non è inizializzato in modo esplicito, quindi:

  • se ha il tipo di puntatore, viene inizializzato su un puntatore nullo;
  • se ha il tipo di puntatore, è inizializzato su un puntatore nullo;
  • se ha tipo aritmetico, è inizializzato a (positivo o senza segno) zero;
  • se è un aggregato, ogni membro viene inizializzato (in modo ricorsivo) in base a queste regole e qualsiasi padding viene inizializzato a zero bit;
  • se è un unione, il primo membro denominato viene inizializzato (in modo ricorsivo) in base a queste regole e qualsiasi padding viene inizializzato su zero bit;

Il comportamento è lo stesso in C89 e C99.

+0

c'è qualche proverà per questo dagli standard? – MOHAMED

+2

Questa affermazione non è vera così com'è. –

+0

@ H2CO3 - in quali casi? – djechlin

Problemi correlati