老牛来学习 发表于 2020-7-25 20:41:05

union内存

#include<stdio.h>

union s{
    short int num;
    char name;
    float score;
    double zz;
}d;

int main()
{
    printf("%d",sizeof(d));
}


这个最后算出来为什么是16呢,union的内存不是按最大的那一个算吗?

永恒的蓝色梦想 发表于 2020-7-25 20:46:49

看这个:https://zhidao.baidu.com/question/8567906.html

sunrise085 发表于 2020-7-25 20:49:44

因为这里存在字节对齐的问题
联合体所占的空间不仅取决于最宽成员,还跟所有成员有关系,即其大小必须满足两个条件:
1.大小足够容纳最宽的成员;
2.大小能被其包含的所有基本数据类型的大小所整除。
页: [1]
查看完整版本: union内存