Eventuali duplicati:
C and C++ : Partial initialization of automatic structureC++ galleggiare inizializzazione serie
Durante la lettura Code Complete, mi sono imbattuto in un C++ esempio di inizializzazione array:
float studentGrades[ MAX_STUDENTS ] = { 0.0 };
non l'ho fatto sapere C++ potrebbe inizializzare la e serie ntire, così ho provato:
#include <iostream>
using namespace std;
int main() {
const int MAX_STUDENTS=4;
float studentGrades[ MAX_STUDENTS ] = { 0.0 };
for (int i=0; i<MAX_STUDENTS; i++) {
cout << i << " " << studentGrades[i] << '\n';
}
return 0;
}
Il programma ha dato i risultati sperati:
0 0
1 0
2 0
3 0
ma cambiando il valore di inizializzazione da 0.0
, per dire, 9.9
:
float studentGrades[ MAX_STUDENTS ] = { 9.9 };
Ha dato il risultato interessante:
0 9.9
1 0
2 0
3 0
La dichiarazione di inizializzazione ha impostato solo il primo elemento dell'array?
Non dimenticare che è possibile utilizzare un elenco di inizializzazione vuoto, nel qual caso * tutti gli elementi * sono impostati su zero. –
@MarkRansom: Sì sì, lo aggiungo, grazie. –
Lo fai sembrare come 0 è un caso speciale, ma non lo è. Sta impostando il primo elemento a 0 e poi il resto a 0. –