c语言关于数祖定义问题

6、以下正确的定义语句是( )
A、 int a[1][4]={1,2,3,4,5};
B、 float x[3][]={{1},{2},{3}};
C、 long b[2][3]={{1},{1,2},{1,2,3}};
D、 double y[][3]={0};为啥选D在下认为选C

long b[2][3]={{1},{1,2},{1,2,3}},说明b是一个long的2x3的二维数组,但赋值时变成了3x3,越界

首先答案C是错误的
因为long b[2][3]定义的是两行三列的二维数组,然后你再看看答案C,{{1},{1,2},{1,2,3}}三行三列,因此C是错误的.
其实你可运行一下,你会发现只有答案D能编译通过

c选项中,赋值用的是,{{1,0,0},{1,2,0},{1,2,3}}这是它的完整版,没有写的赋值为0;
所以一共有9个,但是数列只有2 * 3 = 6个,不合适。