C:这个数组初始化是否合法?

时间:2014-05-05 07:12:11

标签: c

int ar[] = { 1, 2, 3, };

这段代码合法吗?

(我的意图是)

int ar[] = { 1, 2, 3 };

2 个答案:

答案 0 :(得分:5)

int ar[] = { 1, 2, 3, };

以上声明有效。

见C99,6.7.8:

6.7.8 Initialization
Syntax
1 initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }

{ initializer-list , }行明确允许在初始化列表中使用尾随逗号。

答案 1 :(得分:3)

是的,C89和GNU89中的初始化列表中都允许使用逗号。在采用可选/可变参数的宏中非常有用。

请参阅ANSI C standard中的3.5.7节,了解其定义的位置。

3.5.7 Initialization

Syntax

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