unsigned a1:2;是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/12 05:28:46
struct ss
{
union
{
unsigned a1:2;
unsigned a2:3;
unsigned a3:3;
}S;
unsigned char x;
}X;

void main()
{
struct ss a;
a.x = 100;
printf("%d\n",sizeof(ss));
printf("%d\n",a.S.a3);

}

这里unsigned a1:2;是什么意思,printf("%d\n",a.S.a3); 的结果为什么是4呢?

unsigned a1:2; a1是无符号整型变量,冒号后面表示它占几位,此处a1占2位,a2占3位,a3占3位,加起来8位刚好一个字节

打印的结果因为你没有给a3赋值,所以打印出来几都是有可能的