我试图理解位域的概念。但我无法找到为什么 CASE III 中以下结构的大小为 8 个字节。
案例一:
struct B
{
unsigned char c; // +8 bits
} b;
大小(b);// 输出:1(因为 unsigned char 在我的系统上占用 1 个字节)
案例二:
struct B
{
unsigned b: 1;
} b;
sizeof(b); // Output: 4 (because unsigned takes 4 bytes on my system)
案例三:
struct B
{
unsigned char c; // +8 bits
unsigned b: 1; // +1 bit
} b;
sizeof(b); // Output: 8
我不明白为什么案例 III 的输出为 8。我期待 1(char) + 4(unsigned) = 5。