位域是C概念还是C++?关于C位域的问题
它只能在结构中使用吗?我们还可以使用其他什么地方?
AFAIK,位域是特殊的结构变量,它只占用指定的内存空间。的位。它在节省内存和其他方面很有用。 我正确吗?
我编写了一个小程序,了解位域的使用 - 但是,我认为按预期的方式是行不通的。我期望以下结构的大小为1 + 4 + 2 = 7个字节(考虑到unsigned int的大小在我的机器上是4个字节),但令我惊讶的是它变成了12个字节(4 + 4 + 4 )。 任何人都可以让我知道为什么吗?
#include <stdio.h>
struct s{
unsigned int a:1;
unsigned int b;
unsigned int c:2;
};
int main()
{
printf("sizeof struct s = %d bytes \n",sizeof(struct s));
return 0;
}
OUTPUT:
sizeof struct s = 12 bytes
对于downvoter--你不赞同哪些陈述? – 2010-01-15 12:11:19
+1:'依赖于实现'和'避免位域'是关键。 – 2010-01-15 13:50:22
关于内存节省,我会在这里部分不同意:随意指定位域,它们可能会减少结构的内存占用量。但是千万不要试图对他们很聪明,有七次从不指望编译器会用它们做什么。 – dmckee 2010-01-16 03:17:12