这个小程序是如何工作的?

How does this litle program work?

我试图检查有关 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

您需要熟悉 bitfields

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

因此,当您将值从 1 递增时,它会溢出并且 returns 变为零。