如果我宣布这样的话
struct S{
unsigned int bit:4;
}
它是如何运作的?
我对此非常困惑,无法在任何地方找到任何相关信息。
答案 0 :(得分:3)
写作时
S s;
你分配sizeof (S)
字节,在你的情况下似乎是2
您只使用该位空间的4位这一事实不会改变大小。
答案 1 :(得分:0)
您无法分配4
位。最低内存分配单元是一个字节8
位。
但是没有理由使用unsigned int
这会浪费更多内存,请使用unsigned char
。
答案 2 :(得分:0)
这将分配4个字节的内存,仅使用4位内存。 即使不使用位字段,也需要使用位字段来占用它们所声明类型的所有空间。
如果您想更有效地使用内存,可以这样做:
Y
它只会分配一个字节。
sizeof(unsigned int)通常是4个字节,因此sizeof(S)至少为4个字节。