C++ 在C+;中初始化结构内数组的正确方法+;
假设此代码:C++ 在C+;中初始化结构内数组的正确方法+;,c++,C++,假设此代码: #include <iostream> struct test { int a[3]; float b[2]; }; 或 第二种方法是如何编译的?编译器是否选取每个值并 按顺序放入数组插槽?第二个代码段完全有效,如中所述: 嵌套初始值设定项列表周围的大括号可以省略(省略),在这种情况下,尽可能多的初始值设定项子句用于初始化相应子集合的每个成员或元素,随后的初始值设定项子句用于初始化对象的以下成员 由于test是一个集合,由子集合a和b组成,省略嵌套的大括号会导致
#include <iostream>
struct test {
int a[3];
float b[2];
};
或
第二种方法是如何编译的?编译器是否选取每个值并
按顺序放入数组插槽?第二个代码段完全有效,如中所述: 嵌套初始值设定项列表周围的大括号可以省略(省略),在这种情况下,尽可能多的初始值设定项子句用于初始化相应子集合的每个成员或元素,随后的初始值设定项子句用于初始化对象的以下成员
由于
test
是一个集合,由子集合a
和b
组成,省略嵌套的大括号会导致前3个元素用于初始化a
,其余2个元素用于初始化b这不仅仅是给定的,甚至可以混合匹配:这很奇怪。
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;
}