结构体位的疑问
1 #include<stdio.h>
2 struct _A{
3 int a:2;
4 int b:2;
5 };
6 int main()
7 {
8 struct _A AA;
9 AA.a=3;
10 AA.b=2;
11 printf(" %d %d ",AA.a,AA.b);
12
13 }
请问输出为何是-1 -2
3 是0011
2 是0010
[解决办法]
看编译出来的汇编对位是怎么处理的。
2bit signed
所以
11,最高位1表示负数,即-1
10,最高位1表示负数,即-2(同char 0x80表示-128一样)
2bit作为参数传递时,后被提升为int,,即-1,-2输出