标签: c++ unsigned signed bit-fields
在以下代码中
#include<iostream> using namespace std; struct abc{ int x:4; } m; int main(){ m.x = 8; cout<<m.x; }
这里变量x是有符号的,我给它赋值8但输出结果为-8。如果我用unsigned int x:4更改int x:4的声明,那么输出是正确的。为什么第一种情况下的输出结果是-8,即使我给x指定了正值?请详细解释。以及有符号和无符号变量如何存储在内存中?