E34.【C语言】位段练习题
1.题目
分析下列代码中位段在内存中的排布(已知测试平台为VS2022)
struct S
{
int a : 2;
int b : 5;
int c : 10;
int d : 30;
};
int main()
{
struct S s = { 0 };
return 0;
}
有关位段的知识点见64.【C语言】再议结构体(下)文
2.提示
VS满足:由低地址向高地址存储,按浪费空间处理,设二进制数据的存储顺序为从右向左
3.分析
位段的空间以4个字节(int)或者1个字节(char)的方式来开辟
因此一次性申请4个字节
二进制数据的存储顺序为从右向左,d不够存储,则再开辟4字节空间单独存储d,有两部分空间被浪费
则图为