• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

union类变量调用影响内存的问题

donatello 2017-11-10 浏览量:921

       我们知道,union类中所有的成员变量都是占用同一组内存空间的,并且同一时间只能调用一个变量,那么请问,假如union类中有char、short、int三种变量,占用内存空间分别是8位、16位、32位:
union A
{
    char a;
    short b;
    int c;
};
       假如先调用了c,然后再调用a,请问在调用a的时候,高24位内存会受影响吗?是全部补0还是保持不变?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 理论上来说,高24位是不受影响的.

    编译器会自动解释.

    • 发布于 2017-11-10
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 不变,但是后面的空间还访问不到,要不这么写吧

    union A
    {
        char *a;
        short *b;
        int c;
    };
    后面的空间还能读出来,用*a,*(a+1),*(a+2)。。。这样的形式​

    • 发布于2017-11-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 感觉这个问题,还是与大小端有关的。

    大端与小端结果是不一样的。

    • 发布于2017-11-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

union类变量调用影响内存的问题