C语言二维数组赋值问题

下列二维数组初始化中,不正确的的是

A int b[][3]={{5,1},{8}}; B int b[2][3]={5,1,6,2,4};

C int b={5}; C intb[2][3]={{5,1},{6,2},{4,3}};

若有说明 floata[5][4]={{2,3,4},{5,6,7},{8,9,1}};则下列关系式那个为真

A a[0]==2 B=[1][1]=3 C a[2]=={8,9,1} D a[4]=={0,0,0,0}

求推理过程

谢谢

A对。等价于int b[2][3] = {{5, 1, 0}, {8, 0, 0}};
B对。等价于int b[2]3] = {{5, 1, 6}, {2, 4, 0}};
C对。等价于int b = 5才对。不过这不是二维数组了。
D错。int b[2][3]是2行3列,大的{}里面只能有2个{},也就是{ { }, { } }的样子。
---------
A假。a[0]类型是float *而不是float。
B假。a[1][1]是6
C假。因为a有4列,a[2]有4个元素{8, 9, 1, 0}。
D真。a[4]没有赋初值,所以全是0。
【不过说实话,C和D这种写法编译器是会报错的……】
温馨提示:答案为网友推荐,仅供参考