为什么我不能在括号中包装初始化列表?

dar*_*rix -3 c arrays

我通常会声明并初始化一个整数数组,如下所示:

int a[3] = { 1, 2, 3}; // declares an array of 3 integers
Run Code Online (Sandbox Code Playgroud)

但今天我发现将列表括在括号中,如下所示:

int a[3] = ( { 1, 2, 3} ); // gives compile time error
Run Code Online (Sandbox Code Playgroud)

这产生了以下编译器错误:

expected ';' before '}' token
invalid initializer
Run Code Online (Sandbox Code Playgroud)

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

Oli*_*rth 8

这根本就不是有效的语法.以下是C99标准中语法的相关部分:

[6.7]

init-declarator:
    declarator
    declarator = initializer
Run Code Online (Sandbox Code Playgroud)

[6.7.8]

initializer:
    assignment-expression
    { initializer-list }
    { initializer-list , }
Run Code Online (Sandbox Code Playgroud)