C++中结构的奇怪行为[第2部分]

Ins*_*der 3 c++

这是C++第1部分中结构的奇怪行为的延续

如果我这样做

#include<iostream>

using namespace std;

struct box
{
    //int simple_int;
    int arr[3];
};
int main()
{
    box a={10,20,30};
    //box b={100};
    //cout<<b.simple_int<<"\n";
    cout<<a.arr[0];
}
Run Code Online (Sandbox Code Playgroud)

输出: 10这是正确的.

但如果我删除评论.

#include<iostream>

using namespace std;

struct box
{
    int simple_int;
    int arr[3];
};
int main()
{
    box a={10,20,30};
    box b={100};
    cout<<b.simple_int<<"\n";
    cout<<a.arr[0];
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT: 100 20 //instead of 100 10

为什么?

Nem*_*ric 10

box a = {10, 20, 30};
Run Code Online (Sandbox Code Playgroud)

将初始化为:

a.simple_int = 10;
a.arr = {20, 30, 0};
Run Code Online (Sandbox Code Playgroud)

输出时a.arr[0],它将按预期输出20.

  • 不是"{20,30,30}",而是"{20,30,0}" (2认同)