Advertisement

联合体大小端存储

阅读量:
复制代码
    union{
    int val;
    char str[2];
    }obj;
    
    int main()
    {
    obj.str[0] = 10;
    obj.str[1] = 1;
    cout<<obj.val;
    return 0;
    }
    

采用小端格式进行存储时,该段代码的执行结果将显示为266。

这里写图片描述

从观察可知,obj.val中保存的数据为010a,其对应的二进制表示形式为0000 0001 0000 1010,将其转化为十进制数值后,结果为256加8再加2,总计266。
那么问题来了,这一现象背后的原因与两个关键概念密切相关:联合体以及大小端存储方式。

联合体

联合体是一种实现存储空间共享的机制,允许通过多种方式对其进行访问。也可以将其视为一种存储区域

全部评论 (0)

还没有任何评论哟~