我通常会声明并初始化一个整数数组,如下所示:
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)
当然,人们通常没有理由将列表括在括号中,但现在我很好奇 - 为什么我们不能在这里使用括号?
这根本就不是有效的语法.以下是C99标准中语法的相关部分:
[6.7]
Run Code Online (Sandbox Code Playgroud)init-declarator: declarator declarator = initializer
[6.7.8]
Run Code Online (Sandbox Code Playgroud)initializer: assignment-expression { initializer-list } { initializer-list , }