#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