web-dev-qa-db-fra.com

Initialisation du tableau flottant C ++

Duplicata possible:
C et C++: initialisation partielle de la structure automatique

En lisant Code Complete , je suis tombé sur un exemple d'initialisation de tableau C++:

float studentGrades[ MAX_STUDENTS ] = { 0.0 };

Je ne savais pas que C++ pouvait initialiser l'ensemble du tableau, donc je l'ai testé:

#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;
}

Le programme a donné les résultats escomptés:

0 0
1 0
2 0
3 0

Mais changer la valeur d'initialisation de 0.0 dire, 9.9:

float studentGrades[ MAX_STUDENTS ] = { 9.9 };

A donné le résultat intéressant:

0 9.9
1 0
2 0
3 0

La déclaration d'initialisation définit-elle uniquement le premier élément du tableau?

19
Adam Matan

Si vous utilisez autre chose que des accolades vides, vous initialisez uniquement les N premières positions à cette valeur et toutes les autres sont initialisées à 0. Dans ce cas, N est le nombre d'arguments que vous avez passés à la liste d'initialisation, c'est-à-dire,

float arr1[10] = { };       // all elements are 0
float arr2[10] = { 0 };     // all elements are 0
float arr3[10] = { 1 };     // first element is 1, all others are 0
float arr4[10] = { 1, 2 };  // first element is 1, second is 2, all others are 0
28
Ed S.

Non, il définit tous les membres/éléments qui n'ont pas été explicitement définis sur leur valeur d'initialisation par défaut, qui est zéro pour les types numériques.

5
Marcelo Cantos