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

C++ union中char数组赋值后int值的生成逻辑咨询

解析Union中int值16448的生成逻辑
  • 核心前提:

    • '@'的ASCII码为十进制64(十六进制0x40)。
    • 你的union float_u实例data1是全局变量,全局变量会被默认初始化为0,因此未赋值的a[2]和a[3]对应的内存字节值为0。
    • 当前系统采用小端字节序(x86/x86_64架构默认都是小端):内存低地址存储整数的低字节,高地址存储整数的高字节。
    • 从输出Size of union :4可知,int类型占4字节,union的所有成员共享这4字节内存空间。
  • 内存布局与值的计算:
    赋值data1.a[0] = '@'和data1.a[1] = '@'后,4字节内存的分布如下:

    内存地址(从低到高)字节值(十六进制)对应数组元素
    低地址0x40a[0]
    次低地址0x40a[1]
    次高地址0x00a[2]
    高地址0x00a[3]

    小端序下,整数的字节需按高地址到低地址的顺序拼接成完整值,即0x00 0x00 0x40 0x40,组合为十六进制整数0x00004040。
    转换为十进制计算:0x4040 = 64*256 + 64 = 16384 + 64 = 16448,这就是你看到的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:50:22