在C中,如果我使用()来初始化双维数组而不是{},究竟会发生什么?

S M*_*S M 2 c

初始化数组时a[][]:

int a[2][5]={(8,9,7,67,11),(7,8,9,199,89)};
Run Code Online (Sandbox Code Playgroud)

然后显示数组元素.

为什么我得到:

11 89 0 0 0 
0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

如果你在这里使用花括号而不是第一个括号会发生什么?

Dan*_*her 8

(8,9,7,67,11)
Run Code Online (Sandbox Code Playgroud)

是一个使用逗号运算符计算结果为11的表达式.对于另一个初始化程序也是如此.因此,您只显式初始化前两个元素,然后将所有其他元素初始化为0.您的编译器应警告初始化器中缺少大括号.

如果使用花括号,则初始化两个组件数组a,这可能是预期的.