我们可以像这样初始化一个数组:
int myArray[][] = { {10,20} ,{30,40} , {50} };
工作正常。
但我遇到了一种奇怪的情况。
int myAnotherArray[][] = { {,} ,{,} , {,} };
以上代码行compiles fine。根据我的说法很奇怪。因为当编译器解析此语句时,它会一起遇到{
和,
以及}
。编译器不应期望中间的常量或字面值吗?如果有人告诉我如何解析上述语句以及编译器在遇到这种情况时究竟做了什么,我将不胜感激。
答案 0 :(得分:24)
这只是语法允许尾随逗号这一事实的一个怪癖。
允许尾随逗号对于生成诸如{ 0, 1, }
之类的事物的代码生成器是友好的,并且允许您例如方便地注释掉
int[] myArray = {
0,
// 1
};
(正如您可能已经想到的那样,将忽略尾随,
,即{ , }
会产生一个空数组。)
相关问题: