1. ホーム
  2. c++

[解決済み] C++ float 配列の初期化 [重複]。

2022-01-31 23:26:33

質問

<ブロッククオート

重複の可能性があります。
CおよびC++ : 自動構造体の部分的な初期化

読みながら コード入力完了 C++の配列の初期化の例を見つけました。

float studentGrades[ MAX_STUDENTS ] = { 0.0 };

C++が配列全体を初期化できることを知りませんでしたので、テストしてみました。

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

プログラムは期待通りの結果を出してくれました。

0 0
1 0
2 0
3 0

しかし、初期化値を 0.0 を、例えば 9.9 :

float studentGrades[ MAX_STUDENTS ] = { 9.9 };

面白い結果が出ました。

0 9.9
1 0
2 0
3 0

初期化宣言は、配列の最初の要素だけを設定するのですか?

どのように解決するのですか?

この場合、Nは初期化リストに渡した引数の数、つまり、0に初期化されます。

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