热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

为什么这个工会的规模比预期的大?

如何解决《为什么这个工会的规模比预期的大?》经验,为你挑选了1个好方法。

当我输入以下代码时,得到的结果是32个字节。它应该是28个字节。为什么我得到那个结果?

//size of union variable

union U {
    int x[7];
    double y[3];
}z;

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

molbdnilo.. 10

像结构一样,对工会进行填充以同意其成员的所需对齐方式。

double 在您的平台上以8的倍数对齐,而32是8的最小倍数,即至少28。



1> molbdnilo..:

像结构一样,对工会进行填充以同意其成员的所需对齐方式。

double 在您的平台上以8的倍数对齐,而32是8的最小倍数,即至少28。


这个答案应该加上为什么重要(即在数组中使用)。
@akshaykishore这是一个工会。
@CaitLANJenner但要小心。[正在写入的`struct`的填充字节可以更新](https://port70.net/~nsz/c/c11/n1570.html#6.2.6.1p6):“当值存储在具有结构或联合类型的对象,包括在成员对象中,**与任何填充字节相对应的对象表示形式的字节采用未指定的值**。” 在这种情况下,在示例联合中将值分配给y [2]可能会更改x [6]的值。诚然,直接给自己分配struct值时,这仅可能发生。
推荐阅读
author-avatar
天气不再变化_207
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有