class Student
{
public:
unsigned int a:1; //1位
unsigned int b:1; //1位
unsigned int c:1; //1位
unsigned int d:2; //2位
}
main(){
qDebug()<<"a:"<<s->a;
s->b=1;
qDebug()<<"b:"<<s->b;
s->c = 2; //由于超过最大值1,所以取2(0010)的第一位0,所以结果是0
qDebug()<<"c:"<<s->c;
s->d = 2;
qDebug()<<"d:"<<s->d;
/*
a: 0
b: 1
c: 0
d: 2
*/
}
本文深入探讨了C++中位字段的使用,通过一个具体的类Student实例,详细解析了位字段如何分配和存储数据。文章解释了当尝试将超出位字段最大值的数据赋值时,实际存储的是该数据的低位部分,从而导致可能与预期不符的结果。
1582

被折叠的 条评论
为什么被折叠?



