结构体位域的有关问题!
结构体位域的问题!!
typedef struct
{
int a : 1;
int b : 1;
int c : 1;
} test;
void main()
{
test k;
k.a = 1;
k.b = 0;
k.c = 0;
printf( "%d, %d, %d\n ", k.a, k.b, k.c);
}
问题1: 为什么在test k;后,我断点去看了,初始值为 a =0, b=0,c=-1,对于c=-1不理解??
问题2:这样输入为什么k.a会是-1呀?想也不想不通....
------解决方案--------------------
因为只有一位,当它设为1以后,等于符号位设为1,符号为1的就是负数啊?所有位为1的都是负数,这是基本规则 啊?
typedef struct
{
int a : 1;
int b : 1;
int c : 1;
} test;
void main()
{
test k;
k.a = 1;
k.b = 0;
k.c = 0;
printf( "%d, %d, %d\n ", k.a, k.b, k.c);
}
问题1: 为什么在test k;后,我断点去看了,初始值为 a =0, b=0,c=-1,对于c=-1不理解??
问题2:这样输入为什么k.a会是-1呀?想也不想不通....
------解决方案--------------------
因为只有一位,当它设为1以后,等于符号位设为1,符号为1的就是负数啊?所有位为1的都是负数,这是基本规则 啊?