#include <stdint.h>
#include <stdio.h>
typedef union {
uint64_t u[2];
struct {
uint64_t a:30;
uint64_t b:30;
uint64_t c:30;
uint64_t d:30;
uint64_t e:8;
}x;
} mystruct;
int main()
{
printf("Size %d\n", sizeof(mystruct));
}
我正在尝试在 64 位机器上编译它。预期的输出是 16,但我得到了 24。我知道这里发生了一些对齐,但我不确定为什么 struct x 正好是 16 个字节。有人可以解释一下吗。谢谢