int a[][3]={{1,2,3},11,2,3,4,5};
int a[][3]={1,2,3,11,2,3,4,5};
这两者之间有什么区别吗?编译器是否相同?
答案 0 :(得分:2)
由于 6.7.8 Initialization,20 (C99),我非常确定它们是相同的:
- 如果聚合或联合包含作为聚合或联合的元素或成员, 这些规则递归地应用于子集合或包含的联合。如果初始化 子集合或包含的并集以左大括号开头,初始化程序由 大括号及其匹配的大括号初始化了元素或成员 子集合或所包含的联合。否则,只有列表中足够的初始化程序是 考虑到子集合的元素或成员或第一个成员 所包含的工会;剩下的所有初始化程序都将初始化下一个元素,或者 当前子集合或包含的并集是其一部分的集合的成员。
您正在初始化大小为3的子数组。
在第一个版本中,{1,2,3}
由于使用了大括号而被使用。
在第二个版本中,没有括号,因此接下来的三个值(1,2,3
)从初始化列表中获取。