当前位置: 技术问答>linux和unix
结构体位的疑问
来源: 互联网 发布时间:2017-03-20
本文导语: 1 #include 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 #include
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
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输出
2bit signed
所以
11,最高位1表示负数,即-1
10,最高位1表示负数,即-2(同char 0x80表示-128一样)
2bit作为参数传递时,后被提升为int,,即-1,-2输出
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。