位域的概念

sur*_*oon 4 c bit-fields

struct A
{
 int a:2;
 int b:3;
 int c:3;
};

int main()
{
 struct A p = {2,6,1};
 printf("\n%d\n%d\n%d\n",p.a,p.b,p.c);
 return 0;
}    
Run Code Online (Sandbox Code Playgroud)

输出为:-2,-2,1

在C complier和C++编译器中输出上述代码的内容是什么?为什么?

Pav*_*ath 5

你的系统似乎使用了2的补码.一个2-bit位域控股210二进制是-22的补制度.同样110(6)-2一个3-bit2的补码表示.而且1是纯1

另请参阅此处的有符号位字段