结构体对问题

LubinLew 2019-07-09 06:48:26
普通的结构体对齐规则我都明白, 但是笔试的时候遇到了 位段 相关的问题,大佬们给解释一下

typedef struct {
char a:7;
char b:2;
char c:7;
}st3;

typedef struct {
char a:7;
char b:1;

}st4;
...全文
89 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2019-07-09
  • 打赏
  • 举报
回复
这两个结构体都是1字节对齐,因为结构体成员的类型最大是char类型。
轻箬笠 2019-07-09
  • 打赏
  • 举报
回复
平常不用,基本在c语言的开源库里见过几次。详情可看下
https://www.cnblogs.com/LonelyEnvoy/p/6065252.html
636f6c696e 2019-07-09
  • 打赏
  • 举报
回复
1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止; 2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍; 3) 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式(不同位域字段存放在不同的位域类型字节中),Dev-C++和GCC都采取压缩方式; 所以st3大小是3,st4是1

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧