1、结构体中的冒号作用
下列程序输出结果多少?
#include <stdio.h>
#include <string.h>
typedef struct{
int a:2;
int b:2;
int c:1;
}test;
int main(){
test t;
t.a=1;
t.b=3;
t.c=1;
printf("%d\n%d\n%d\n",t.a,t.b,t.c);
return 0;
}
结果:
1
-1
-1
分析:
int a:2表示a占2位,即二进制a=01,因此输出1
b占两位,b=11,但是由于是%d输出,所以先将b转化成32位int型,由于最高位是1,所以默认其为负数,所以扩展为11111111 11111111 11111111 11111111
即-1,c类似