首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++为什么这段代码的输出是3?(结构)

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

Stack Overflow用户
提问于 2021-09-19 23:35:56
回答 2查看 71关注 0票数 0

有人能帮我一步一步地理解为什么下面的C++代码会输出3吗?

代码语言:javascript
复制
#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];
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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。

票数 3
EN

Stack Overflow用户

发布于 2021-09-20 00:14:03

代码语言:javascript
复制
str t[2] = { {0,2,4,6}, {1,3,5,7} };

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

代码语言:javascript
复制
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]赋值给int类型的变量。在它里面,我们发现了另一个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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69247811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档