我正在 Windows 上处理 turbo C,其中 char 占用一个字节。现在我的问题出在下面的联合上。
union a
{
unsigned char c:2;
}b;
void main()
{
printf("%d",sizeof(b)); \\or even sizeof(union a)
}
该程序将输出打印为 2,而 union 应该只占用 1 个字节。为什么会这样?
对于 struct 给出 1 个字节很好,但这个联合工作不正常。
还有一件事是如何访问这些位字段。
scanf("%d",&b.c); //even scanf("%x",b.c);
不起作用,因为我们无法获得位地址。所以我们必须使用另一个变量,如下所示
int x;
scanf("%d",&x);
b.c=x;
我们不能避免吗?有没有别的办法???