现在的位置: 首页 > 综合 > 正文

c语言位域问题

2018年04月16日 ⁄ 综合 ⁄ 共 352字 ⁄ 字号 评论关闭
#include <iostream>
using namespace std;

struct BIT3
{
 int a1 : 31;
  unsigned int a2 : 1;
};

struct BIT4
{
 int a1 : 31;
  int a2 : 1;
};

int main()
{
    BIT3 bit3;
 bit3.a2=1; 
    cout<<bit3.a2<<endl; //输出1 
     
 BIT4 bit4;
 bit4.a2=1; 
    cout<<bit4.a2<<endl; //输出-1 
    
 system("pause");
    return 0;
}


解释一下为什么第二个输出-1?

其实这是编码的问题,比如:
    unsigned char 能表示0~255(2^8-1)
    int 能表示 -2^31到2^31-1
    当int 只有一位的时候,能表示-1到0,也就是当它为1,只表示符号位为负的最大数,也就是-1,否则为0

抱歉!评论已关闭.