首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

结构体位的疑问解决办法

2013-01-26 
结构体位的疑问1 #includestdio.h2 struct _A{3int a:24int b:25 }6 int main()7 {8struct _A AA9AA

结构体位的疑问
  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输出

热点排行