为什么即使在分配正值后,位域也会存储负数?

时间:2017-09-02 04:20:14

标签: 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指定了正值?请详细解释。以及有符号和无符号变量如何存储在内存中?

0 个答案:

没有答案