Newsgroup: it.comp.lang.c++
Titolo: inizializzazione array

Salve a tutto il ng.
Se per es faccio  int V[6]={1, 2, 3, 4};   gli ultimi 2 interi che non ho
inizializzato esplicitamente vengono inizializzati automaticamente a 0.
Questo almeno è il comportamento del g++ (anche con l'opzione -ansi)  e con
il visual c++ 6.
Volevo solo sapere se questa caratteristica è definito nel c++ standard e se
sono estensioni dei vari compilatori.
Grazie in anticipo,
Alex
-----------------
email: 
el_co...@libero.it
-----------------

 standard e se sono estensioni dei vari compilatori.
E' una caratteristica dei compilatori, oltre che una malsana abitudine :-)
E cmq non fidarti troppo xche' con MSVC6 per esempio, solo in versione 
DEBUG le variabili sono inizializzate automaticamente.
Nella versione RELEASE, non e' detto (anzi, non sono proprio inizializzate 
a meno che tu non lo abbia esplicitamente dichiarato)

 abitudine :-)
Beh, no.
Il K&R dice: "L'inizializzatore di un vettore  è una lista di
inizializzatori
per i suoi elementi.[...]se gli inizializzatori sono meno degli elementi,
quelli in eccesso fra questi ultimi vengono inizializzati a zero"
_Suppongo_ che questo comportamento non sia variato in C++
-- 
Gerolamo

 quelli in eccesso fra questi ultimi vengono inizializzati a zero"
Grazie ad entranbi per le risposte.
Scusate se insisto, ma il punto è che ho fatto l'same di programmazione 1
giusto l'altro giorno e alla fine di un esericizio c'era + o - una
situazione del genere:
int A[6]={1,2,3,4,5};
for (int i=0; i<6; ++i)
    cout << A[i] << "  ";
Era una domanda a risposta multipla e qualla giusta era:
"il frammento di programma stampa:  1 2 3 4 5 0"
Io non la ho segnata perchè pensavo che il l'ultimo valore dell'array (non
inizializzato esplicitamente) non poteva essere certo 0 ma un numero
casuale.
Quindi se questo comportamento è caratteristico di un certo compilatore
posso controbattere la risposta al docente ma se è ansi C++ posso solo
tacere... :)
Al limite dove potrei informarmi sullo specifico?
Grazie ancora,
Alex

 ha scritto nel messaggio
news:bjquda$m0rb7$1...@ID-83341.news.uni-berlin.de...

guarda se non la sapevi cmq tu di tuo andare a controbattere in appello su
un tuo fallo mi pare un po sleale !!! io mi vergognerei e non lo farei mai
per nessun motivo al mondo ... ma molti mi danno dell'idiota perche' ho
questi comportamenti ...
vedi tu ... io preferisco riuscire con le mie forze e non perche' sono stato
sleale nel gioco ...
ciao

 C++ posso solo tacere... :)
Beh se come dice Geralamo il K&R dice che i vettori vengono cmq 
inizializzati a zero, allora hai poco da discutere.
Se anche MSVC6 non lo facesse (e di questo sono abbastanza sicuro per 
quanto riguarda la versione release), sarebbe cmq una falla del compilatore 
che non rispetterebbe gli std del linguaggio.

Forse hai inteso male.
Se il comportamento fosse del compilatore NESSUNA delle 4 possibili risposte
sarebbe stata giusta.
Io, pensando che i valori non venissero inizializzati non ho trovato nessuna
delle riposte per me adeguate e quindi ne ho messa una a caso.
Se il comportamento non fosse previsto dallo standard l'esercizio per me
potrebbe anche essere annullato.
Ciao,
Alex

sono estensioni dei vari compilatori.
Bjarne Stroustoup a pag. 89 di "The C++ Programming Language, Special
Edition" al par. 5.2.1 Array Initializers, scrive fra l'altro:
<quote>
If the initializer supplies too few elements, 0 is assumed for the
remaining array elements. For example:
	int v5[8] = {1, 2, 3, 4};
is equivalent to
	int v5[8] = {1, 2, 3, 4, 0, 0, 0, 0};
</quote>
-- 
ciao, hal