这个litle程序如何运作?

时间:2018-06-12 23:34:13

标签: c++ struct bit-fields

我试图检查关于C ++的QA练习,一个问题让我发疯了!

typedef struct {
    unsigned int i : 1;
} myStruct;

int main()
{
    myStruct s;
    s.i = 1;
    s.i++;
    cout << s.i;
    return 0;
}

问题是什么是输出:0/1/2/3 / -1 /段错误?

我确实检查了 2 ,这是一个错误的答案:D,那么为什么程序会显示 0

1 个答案:

答案 0 :(得分:7)

您需要熟悉bitfields

默认情况下,int的大小为32位(4字节)。但是使用给定的表示法,您可以指定变量使用的位数。

因此,当您将值从1递增时,它会溢出并返回零。

相关问题