You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么这段使用嵌套结构体的C++代码运行输出结果为3?

C++代码输出结果分析

首先附上完整代码:

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

步骤1:梳理结构体嵌套的内存布局

两个结构体都是无自定义构造函数的聚合类型,内存按成员声明顺序连续排布:

  • sct结构体仅包含1个int数组成员t,长度为2,所以单个sct对象占2个int的连续空间
  • str结构体仅包含1个sct数组成员t,长度为2,所以单个str对象占2*2=4个int的连续空间

步骤2:拆解聚合初始化的赋值逻辑

main函数中定义的是str t[2],也就是包含2个str元素的数组,总共有2*4=8个int的连续空间,对应的初始化列表{ {0,2,4,6}, {1,3,5,7} }会按顺序依次填充:

  • 第一个str元素t[0]对应初始值{0,2,4,6},按内存顺序赋值结果为:
    • t[0].t[0].t[0] = 0
    • t[0].t[0].t[1] = 2
    • t[0].t[1].t[0] = 4
    • t[0].t[1].t[1] = 6
  • 第二个str元素t[1]对应初始值{1,3,5,7},按内存顺序赋值结果为:
    • t[1].t[0].t[0] = 1
    • t[1].t[0].t[1] = 3
    • t[1].t[1].t[0] = 5
    • t[1].t[1].t[1] = 7

步骤3:匹配输出语句的取值

代码输出的是t[1].t[0].t[1],对应上面的赋值结果就是3,所以最终打印结果为3。


内容的提问来源于stack exchange,提问作者cal223

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:27:03