15

我们可以像这样初始化一个数组:

int myArray[][] = { {10,20} ,{30,40} , {50} };

它工作正常。

但是我遇到了一个特殊的情况。

int myAnotherArray[][] = { {,} ,{,} , {,} };

上面这行代码编译得很好。在我看来这很奇怪。因为当编译器解析这个语句时,它会遇到{and ,and }all 。编译器不应该期望介于两者之间的常量或文字吗?如果有人能告诉我上面的语句是如何解析的,以及编译器在遇到这种情况时究竟做了什么,我将不胜感激。

4

1 回答 1

23

这只是语法允许尾随逗号这一事实的一个怪癖。

例如,允许尾随逗号对生成诸如此类的东西的代码生成器是一种友好,{ 0, 1, }并且允许您例如方便地注释掉最后一行

int[] myArray = {
    0,
//  1
};

(您可能已经知道,尾随,被忽略,即{ , }产生一个空数组。)

相关问题:

于 2012-07-13T15:42:54.053 回答