关于位段,该如何解决

关于位段

struct 
{
 int a:2;
}x;

..............
x.a=1;
x.a+=1;
printf("%d\n",x.a);


为什么在执行x.a=1后打印结果是1,而执行x.a+=1后,打印结果变成啦-2,不应该是01+01=10吗?
------解决思路----------------------
引用:
Quote: 引用:

%d说明是十进制格式输出。
我其实想问为什么不是2,而是-2
大概是补码问题吧,你写成unsigned int a:2就是2了。
------解决思路----------------------
10就是-2
11是-1