【发布时间】:2012-08-15 05:20:48
【问题描述】:
我正在使用 char 占用一个字节的 windows 上的 turbo C。现在我的问题是下面的联合。
union a
{
unsigned char c:2;
}b;
void main()
{
printf("%d",sizeof(b)); \\or even sizeof(union a)
}
这个程序将输出打印为 2,而 union 应该只占用 1 个字节。为什么会这样?
对于结构来说,给出 1 个字节很好,但这个联合工作不恰当。
还有一件事如何访问这些位域。
scanf("%d",&b.c); //even scanf("%x",b.c);
不起作用,因为我们无法获得位地址。所以我们必须使用另一个变量,如下所示
int x;
scanf("%d",&x);
b.c=x;
我们不能避免吗?有没有其他办法???
【问题讨论】:
标签: c structure bit-manipulation unions