当前位置:  技术问答>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

|
看编译出来的汇编对位是怎么处理的。

2bit signed
所以
11,最高位1表示负数,即-1
10,最高位1表示负数,即-2(同char 0x80表示-128一样)

2bit作为参数传递时,后被提升为int,,即-1,-2输出

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3