我通常会像这样声明和初始化整数数组:

int a[3] = { 1, 2, 3}; // declares an array of 3 integers


但是今天我想到也将列表包装在括号中,就像这样:

int a[3] = ( { 1, 2, 3} ); // gives compile time error


其中产生了以下编译器错误:

expected ';' before '}' token
invalid initializer


自然地,通常没有理由将列表用括号括起来,但是现在我很好奇-为什么我们不能在这里使用括号?

最佳答案

这根本不是有效的语法。这是C99标准中语法的相关部分:

[6.7]


init-declarator:
    declarator
    declarator = initializer



[6.7.8]


initializer:
    assignment-expression
    { initializer-list }
    { initializer-list , }

07-24 09:20