int a[2][2][2] = {
{ 0,0 },
{ 0,0 },
{ 0,0 },
{ 0,0 },
{ 0,0 },
{ 0,0 },
{ 0,0 },
{ 0,0 },
};
これを実行すると
「初期化子が多すぎる」
とでます。
int a[2][2][2] = {
0,0 ,
0,0 ,
0,0 ,
0,0 ,
0,0 ,
0,0 ,
0,0 ,
0,0
};
にするとうまくいくのですが上のほうがすっきりしているので
上のようにできないものでしょうか。
3次元配列の初期化
Re:3次元配列の初期化
以下ではどうでしょうか?
後、上も下も数値の数が多すぎます。
2x2x2なので数値の数は8個までですが
YHさんのプログラムでは16個の初期化子が定義されています。
int a[2][2][2] = { { { 0, 0 }, { 0, 0 } }, { { 0, 0 }, { 0, 0 } } };
後、上も下も数値の数が多すぎます。
2x2x2なので数値の数は8個までですが
YHさんのプログラムでは16個の初期化子が定義されています。
Re:3次元配列の初期化
int の総数は8(2の3乗)なので、
エラーが出るのは数値の数が多い(16個)からではないでしょうか。
後者の書き方では 0 以外の数値を入れるとエラーが出ると思います。
(もしかしたらエラーではなく警告がでるかも)
エラーが出るのは数値の数が多い(16個)からではないでしょうか。
後者の書き方では 0 以外の数値を入れるとエラーが出ると思います。
(もしかしたらエラーではなく警告がでるかも)
Re:3次元配列の初期化
あと補足ですが、これでは{}の数が合っていないので、ただの二次元配列"a[8][2]"です ----------------------------------------------------------------------------- int a[2][2][2] = { { 0,0 }, { 0,0 }, { 0,0 }, { 0,0 }, { 0,0 }, { 0,0 }, { 0,0 }, { 0,0 }, }; ----------------------------------------------------------------------------- 要素を全部書く場合は、配列の一番左の値から順に書いていけば大丈夫だと思います。 ●a[2][3][2]の場合● ①:まず、配列全体の{}を書く。 a[2][3][2] = { }; ②:一番左の数だけカッコを中に書く(この例では2個) a[2][3][2] = { { },{ } }; ③:二番目の数だけカッコを更に中に書く(この例では3個) a[2][3][2] = { { {},{},{} },{ {},{},{} } }; ④:一番最後の数だけ要素を書く。(この例では2個。要素の間にはコンマを付ける。) a[2][3][2] = { { {●,●},{●,●},{●,●} },{ {●,●},{●,●},{●,●},} }; ⑤:見やすくする場合は、段落などを付ける。 int a[2][3][2] = { { { ●, ● }, { ●, ● }, { ●, ● } }, { { ●, ● }, { ●, ● }, { ●, ● }, } }; ※a[2][2][2]の場合はGPGAさんのを見て下さい(上記参照) 多重ループのように、どんどん階層が深くなるという感じです。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ついでに、カッコを書かない場合は配列の最初から順に初期化されます。 要素が足りない場合は、残りが全て「0」になります。(多い場合はエラー) a[2][3][2]={1,2,3,4,5,6,7}; int a[2][3][2] = { { { 1, 2 }, { 3, 4 }, { 5, 6 } }, { { 7, 0 }, { 0, 0 }, { 0, 0 }, } }; a[0][0][0] = 1 a[0][0][1] = 2 a[0][1][0] = 3 a[0][1][1] = 4 a[0][2][0] = 5 a[0][2][1] = 6 a[1][0][0] = 7 a[1][0][1] = 0 ~以下略~ このようになります。
Re:3次元配列の初期化
Cの規格では
int a[2][2][2] = { 1,2,3,4,5,6,7,8 };
と書こうが、
int a[2][2][2] ={
{
{ 1, 2 },
{ 3, 4 }
},
{
{ 5, 6 },
{ 7, 8 }
}
};
と書こうが意味は一緒です。
int a[2][2][2] = { 1,2,3,4,5,6,7,8 };
と書こうが、
int a[2][2][2] ={
{
{ 1, 2 },
{ 3, 4 }
},
{
{ 5, 6 },
{ 7, 8 }
}
};
と書こうが意味は一緒です。