【发布时间】:2013-05-20 21:40:57
【问题描述】:
大家好,
我想知道联合是否使用填充?
由于union的大小是最大的数据成员大小,最后能不能有padding?
【问题讨论】:
-
简而言之,是的!!在我的 Windows 系统上,联合填充的大小是
int大小的倍数,即 4 字节。因此,除非您使用#pragma pack(1),否则大小为 3 字节的联合将再填充一个字节以产生 4 字节。写一个程序并在发布问题之前尝试一下。 -
"一个联合被填充为整数的倍数,即 4 个字节。"但在这种情况下 union ab{ char a; }一种;大小为 1
-
在你的情况下根本没有填充。谁说
padding总是完成?就像丹尼尔菲舍尔说的那样,它不是标准强制。 -
union u{unsigned a:21;};- 这个联合在我的 Windows 系统上是 4 个字节,除非我使用#pragma pack(1),如果我使用它,则为 3 个字节。