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类似
原文:http://blog.csdn.net/starcuan/article/details/20942849