Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+;中初始化结构内数组的正确方法+;_C++ - Fatal编程技术网

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;
}