#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
本文探讨了C++中使用位字段表示整数时符号位的不同处理方式。具体分析了有符号整数与无符号整数在一位表示时的差异,并通过示例代码展示了输出-1的原因。
2626

被折叠的 条评论
为什么被折叠?



