gpt4 book ai didi

c - union 体的大小是否等于其最大成员的大小?

转载 作者:行者123 更新时间:2023-12-04 16:10:23 26 4
gpt4 key购买 nike

有些书说是,但下面的代码表明它不是真的

union
{
int n;
char array[5];
} u;
printf("%d %d %d", sizeof(u.n), sizeof(u.array), sizeof(u));

你有什么看法?

最佳答案

union 的大小必须满足两个要求:

  • 它必须至少与其最大的成员一样大
  • 它必须是其每个成员的对齐要求的倍数。

需要后一条规则才能使数组起作用;当在内存中一个接一个地放置时,它可以保持 union 正确对齐。

因此,如果最大元素是五个字节,但某些元素需要四字节对齐,则 union 大小必须是大于或等于五个字节的四个字节的倍数。 8 个字节就满足了。

大多数 C 实现使用符合这两个规则的最小尺寸。

关于c - union 体的大小是否等于其最大成员的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18758266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com