有人能帮我一步一步地理解为什么下面的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];
}发布于 2021-09-19 23:58:00
t[1]是{1,3,5,7}。
str在内存中被表示为四个背靠背的整数,被组织成两个sct结构。在本例中,第一个参数的值为1和3,而第二个参数的值为5和7。
因此,t[1].t[0]为{1,3},因此t[1].t[0].t[1]为3。
发布于 2021-09-20 00:14:03
str t[2] = { {0,2,4,6}, {1,3,5,7} };这意味着我们是一个由索引为0的两个str值{0,2,4,6}和索引为1的{1,3,5,7}组成的数组。
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,3和t[1].t[1]=5,7。现在,当讨论cout << t[1].t[0].t[1];时,我们看到了t[1].t[0]=1,3中的内容,然后进入stc块,将t[1].t[0]赋值给int类型的变量。在它里面,我们发现了另一个int类型的变量t[2]。在这里,我们将之前的值划分为t[1].t[0].t[0]=1和t[1].t[0].t[1]=3。现在,当我们讨论cout << t[1].t[0].t[1];时,我们会看到t[1].t[0].t[1]=3中有什么,然后由于cout!
https://stackoverflow.com/questions/69247811
复制相似问题