简单一题求解释
struct bit {
int a:3;
int b:2;
int c:3;
};
int main() {
struct bit s;
char *c= (char *)&s;
cout<<sizeof(bit)<<endl;
*c=0x99;
cout<<s.a<<endl<<s.b<<endl<<s.c<<endl;
cin>>c;
return 0;
}
输出:
4
1
-1
-4
最后一个 为什么是 -4
c是有符号的 3 bit 表示范围不是 -3~3么?
[解决办法]
c是有符号的 3 bit 表示范围不是 -4~3 (-2^(n-1)~(2^(n-1))-1)
[解决办法]
100=-4, 101=-3 ,110=-2, 111=-1, 000=0.