user-0 提问: int x[][3]={{1,2,3},{4, ,5 6}};C语言中这条初始化语句对不对

回复:
user: user-1
content: 这种写法是对的吧。我编译通过了。 多换几个IDE试试。我在dev-c++上编译通过。

user: user-0
content: 引用 2 楼 paschen 的回复:int x[][3]={{1,2,3},{},{4,5,6}};  这个C++下没问题， 不知C标准是否支持 是vc++吗，我编译没通过

user: user-2
content: 引用 4 楼 caojinrong 的回复:[quote=引用 1 楼 paschen 的回复:] 应该是：int x[][3]={{1,2,3},{4,5, 6}}; 吧， 你逗号位置错了 引用int x[ ][3]={{1,2,3},{},{4,5,6}};不对，C语言中的二维数组是对齐的，第二下标规定为3，则每个元素长度都应为3而第二个元素为空，当然有些编译器是支持这种写法的，自动补0呗！[/quote]  这种{4, ,5 6} 肯定是不行的，估计书上印刷错了

user: user-3
content: 引用 1 楼 paschen 的回复:应该是：int x[][3]={{1,2,3},{4,5, 6}}; 吧， 你逗号位置错了 引用int x[ ][3]={{1,2,3},{},{4,5,6}};不对，C语言中的二维数组是对齐的，第二下标规定为3，则每个元素长度都应为3而第二个元素为空，当然有些编译器是支持这种写法的，自动补0呗！

user: user-0
content: 引用 1 楼 paschen 的回复:应该是：int x[][3]={{1,2,3},{4,5, 6}}; 吧， 你逗号位置错了 不是，书上原句就是我写的那个，所以我在怀疑是不是书错了。。。

user: user-2
content: int x[][3]={{1,2,3},{},{4,5,6}};  这个C++下没问题， 不知C标准是否支持

user: user-2
content: 应该是：int x[][3]={{1,2,3},{4,5, 6}}; 吧， 你逗号位置错了

user: user-0
content: 引用 15 楼 zhao4zhong1 的回复:空初始化列表是一种语法糖。 语法糖越甜，编译调试查错越苦！ 把有限的生命浪费在品尝/品鉴无穷多种的语法糖中，我认为不值当。  铭记在心，谢谢老师

user: user-0
content: 引用 10 楼 user-6 的回复:C语言不允许空 {}  做初始化  它的语法就生成不了 {} initializer:     assignment-expression     { initializer-list }     { initializer-list , }  initializer-list:     designationopt initializer initializer-list , designationopt initializer  [quote=引用 8 楼 paschen 的回复:] [quote=引用 7 楼 u013409924 的回复:] [quote=引用 6 楼 paschen 的回复:] [quote=引用 4 楼 caojinrong 的回复:] [quote=引用 1 楼 paschen 的回复:] 应该是：int x[][3]={{1,2,3},{4,5, 6}}; 吧， 你逗号位置错了 引用int x[ ][3]={{1,2,3},{},{4,5,6}};不对，C语言中的二维数组是对齐的，第二下标规定为3，则每个元素长度都应为3而第二个元素为空，当然有些编译器是支持这种写法的，自动补0呗！[/quote]  这种{4, ,5 6} 肯定是不行的，估计书上印刷错了[/quote]  这个也通不过是为啥？[/quote]  第二个元素用 {} VC6 不认，VS下可以，至于标准怎么说的不太清楚，等@user-6解释[/quote][/quote]  谢谢！

user: user-0
content: 谢谢！ 引用 11 楼 lm_whales 的回复:int x[ ][3]={{1,2,3},{},{4,5,6}}; C 不接受空的 初始化表， C++原本也是不接受的 不过C++11 已经可以接受了 你可以试一试

user: user-4
content: 空初始化列表是一种语法糖。 语法糖越甜，编译调试查错越苦！ 把有限的生命浪费在品尝/品鉴无穷多种的语法糖中，我认为不值当。

user: user-5
content: 引用 13 楼 user-6 的回复:C++ 从 98 年第一版标准开始就接受空初始化列表。  [quote=引用 11 楼 lm_whales 的回复:]  int x[ ][3]={{1,2,3},{},{4,5,6}}; C 不接受空的 初始化表， C++原本也是不接受的 不过C++11 已经可以接受了 你可以试一试[/quote]这个不清楚，不过VC据说标准执行的一向不是很好

user: user-6
content: C++ 从 98 年第一版标准开始就接受空初始化列表。  引用 11 楼 lm_whales 的回复:int x[ ][3]={{1,2,3},{},{4,5,6}}; C 不接受空的 初始化表， C++原本也是不接受的 不过C++11 已经可以接受了 你可以试一试

user: user-5
content: VC6 一下就不要考虑了 VC2013 对C++11 支持的听说也不好 据说 VC2015 支持的还可以  C99以及以后的版本，不知道有没有支持空的初始化表

user: user-5
content: int x[ ][3]={{1,2,3},{},{4,5,6}}; C 不接受空的 初始化表， C++原本也是不接受的 不过C++11 已经可以接受了 你可以试一试

user: user-6
content: C语言不允许空 {}  做初始化  它的语法就生成不了 {} initializer:     assignment-expression     { initializer-list }     { initializer-list , }  initializer-list:     designationopt initializer initializer-list , designationopt initializer 引用 8 楼 paschen 的回复:[quote=引用 7 楼 u013409924 的回复:] [quote=引用 6 楼 paschen 的回复:] [quote=引用 4 楼 caojinrong 的回复:] [quote=引用 1 楼 paschen 的回复:] 应该是：int x[][3]={{1,2,3},{4,5, 6}}; 吧， 你逗号位置错了 引用int x[ ][3]={{1,2,3},{},{4,5,6}};不对，C语言中的二维数组是对齐的，第二下标规定为3，则每个元素长度都应为3而第二个元素为空，当然有些编译器是支持这种写法的，自动补0呗！[/quote]  这种{4, ,5 6} 肯定是不行的，估计书上印刷错了[/quote]  这个也通不过是为啥？[/quote]  第二个元素用 {} VC6 不认，VS下可以，至于标准怎么说的不太清楚，等@user-6解释[/quote]

user: user-0
content: 引用 8 楼 paschen 的回复:[quote=引用 7 楼 u013409924 的回复:] [quote=引用 6 楼 paschen 的回复:] [quote=引用 4 楼 caojinrong 的回复:] [quote=引用 1 楼 paschen 的回复:] 应该是：int x[][3]={{1,2,3},{4,5, 6}}; 吧， 你逗号位置错了 引用int x[ ][3]={{1,2,3},{},{4,5,6}};不对，C语言中的二维数组是对齐的，第二下标规定为3，则每个元素长度都应为3而第二个元素为空，当然有些编译器是支持这种写法的，自动补0呗！[/quote]  这种{4, ,5 6} 肯定是不行的，估计书上印刷错了[/quote]  这个也通不过是为啥？[/quote]  第二个元素用 {} VC6 不认，VS下可以，至于标准怎么说的不太清楚，等@user-6解释[/quote] 谢谢！

user: user-2
content: 引用 7 楼 u013409924 的回复:[quote=引用 6 楼 paschen 的回复:] [quote=引用 4 楼 caojinrong 的回复:] [quote=引用 1 楼 paschen 的回复:] 应该是：int x[][3]={{1,2,3},{4,5, 6}}; 吧， 你逗号位置错了 引用int x[ ][3]={{1,2,3},{},{4,5,6}};不对，C语言中的二维数组是对齐的，第二下标规定为3，则每个元素长度都应为3而第二个元素为空，当然有些编译器是支持这种写法的，自动补0呗！[/quote]  这种{4, ,5 6} 肯定是不行的，估计书上印刷错了[/quote]  这个也通不过是为啥？[/quote]  第二个元素用 {} VC6 不认，VS下可以，至于标准怎么说的不太清楚，等@user-6解释

user: user-0
content: 引用 6 楼 paschen 的回复:[quote=引用 4 楼 caojinrong 的回复:] [quote=引用 1 楼 paschen 的回复:] 应该是：int x[][3]={{1,2,3},{4,5, 6}}; 吧， 你逗号位置错了 引用int x[ ][3]={{1,2,3},{},{4,5,6}};不对，C语言中的二维数组是对齐的，第二下标规定为3，则每个元素长度都应为3而第二个元素为空，当然有些编译器是支持这种写法的，自动补0呗！[/quote]  这种{4, ,5 6} 肯定是不行的，估计书上印刷错了[/quote]  这个也通不过是为啥？