我试着检查一下关于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/Seg错误?
我检查了2,这是一个错误的答案:D,那么为什么程序会显示呢?
发布于 2018-06-12 23:48:03
您需要熟悉位域。
默认情况下,int的大小为32位(4字节)。但是使用给定的表示法,您可以指定变量使用了多少位。
因此,当您将值从1增加时,它会溢出并返回到零。
https://stackoverflow.com/questions/50827229
复制相似问题