C++ 为什么这段代码的输出是3? (结构)

C++ Why is the output of this code 3? (structs)

有人可以帮助我逐步理解为什么以下 C++ 代码输出 3 吗?

#include <iostream> 
using namespace std;

struct sct
{
    int t[2];
};

struct str
{
    sct t[2];
};

int main() {
    str t[2] = { {0,2,4,6}, {1,3,5,7} };
    std::cout << t[1].t[0].t[1];
}

t[1]{1,3,5,7}

str 在内存中表示为四个背靠背的整数,组织成 2 个 sct 结构。在这种情况下,第一个包含值 1 和 3,而第二个包含 5 和 7。

因此,t[1].t[0]{1,3},所以t[1].t[0].t[1]是3。

str t[2] = { {0,2,4,6}, {1,3,5,7} };

这意味着我们是两个 str{0,2,4,6} 在索引 0 和 {1,3,5,7} 在索引 1 的数组。

cout<<t[0]  //gives 0,2,4,6
cout<<t[1]  //gives 1,3,5,7

现在,当有问题 cout << t[1].t[0].t[1]; 时,我们会看到 t[1] 中的内容,即 (1,3,5,7),然后我们进入 str 块以分配 t[1]stc 类型的变量。在其中,我们找到了另一个类型为 stc 的变量 t[2]。这里我们将之前的值划分为 t[1].t[0]=1,3t[1].t[1]=5,7。 现在,当有问题 cout << t[1].t[0].t[1]; 时,我们会看到 t[1].t[0]=1,3 中的内容,然后我们进入 stc 块内部,将 t[1].t[0] 分配给类型为 [=29= 的变量].在其中,我们找到了另一个 int 类型的变量 t[2]。在这里,我们将之前的值划分为 t[1].t[0].t[0]=1t[1].t[0].t[1]=3。 现在,当有问题 cout << t[1].t[0].t[1]; 时,我们会看到 t[1].t[0].t[1]=3 中的内容,然后由于 cout!!!!!

而将其打印出来