假设此代码:
#include <iostream>
struct test {
int a[3];
float b[2];
};
我可以通过以下两种方式初始化数组:
int main(){
test t = {{1,2,3}, {1.0,2.0}};
return 0;
}
要么
int main(){
test t = {1, 2, 3, 1.0, 2.0};
return 0;
}
第二种方法如何编译?编译器选择每个值并按顺序放入数组插槽中吗?
如摘要初始化中所述,第二个片段完全有效:
可以省去(忽略)嵌套的初始化程序列表周围的花括号,在这种情况下,可以使用尽可能多的初始化程序子句来初始化相应子聚合的每个成员或元素,而随后的初始化程序子句用于初始化子初始化集合的以下成员。目的。...
因为test
是一个聚合,由子聚合组成,a
并且b
省略嵌套花括号,将导致前3个元素用于初始化a
,其余2个元素用于初始化b
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句