找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 967|回复: 5
收起左侧

简单的代码,求大神告知,谢谢你

[复制链接]
回帖奖励 50 黑币 回复本帖可获得 50 黑币奖励! 每人限 1 次
ID:895406 发表于 2021-4-8 09:39 | 显示全部楼层 |阅读模式
51hei图片_20210408092818.jpg

答案: 3  pg.state=3
  疑问: 结构体的大小是所有成员的内存之和,我觉得是sizeof(pg) 为7
            state 占用了3位,101,应该为5  即pg.state=5
  求大神告知,谢谢你!
回复

使用道具 举报

ID:871393 发表于 2021-4-8 12:57 | 显示全部楼层
冒号后面是占用几位
同类型的short可以挤到一起  只要不超过sizeof(short)的位数  就算一个short  就是2;
char也可以挤到一起 一共8位正好是一个sizeof(char)  也算一个char  就是1;
一共就是3

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:871393 发表于 2021-4-8 13:03 | 显示全部楼层
77599585 发表于 2021-4-8 12:57
冒号后面是占用几位
同类型的short可以挤到一起  只要不超过sizeof(short)的位数  就算一个short  就是2;
...

后面的问题我也不懂 希望你弄明白之后回复我一下 互相学习哈
回复

使用道具 举报

ID:592807 发表于 2021-4-8 13:48 | 显示全部楼层
77599585 发表于 2021-4-8 13:03
后面的问题我也不懂 希望你弄明白之后回复我一下 互相学习哈

不报错吗?没有凑成3个F,少了一位。这种结构体一般会强制配成8位  16位  32位的,随便定义一位也要凑齐。
假设你不报错,优化自动给你添加了最后一位。

pg这个结构体就是一个16位的类型(定义了15个,帮你补一个)
所以sizeof(pg)应该等于4才对
pg.state=5



另外unsigned short mode:4  带变得是mode只取unsigned short中的最低4位

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:592807 发表于 2021-4-8 13:56 | 显示全部楼层
77599585 发表于 2021-4-8 13:03
后面的问题我也不懂 希望你弄明白之后回复我一下 互相学习哈

看错了,重新看一下。两个short合起来不超过8,占用1个字节,剩下的三个合起来等于8,占用一个字节合起来就是3个字节。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:895406 发表于 2021-4-8 14:13 | 显示全部楼层
77599585 发表于 2021-4-8 13:03
后面的问题我也不懂 希望你弄明白之后回复我一下 互相学习哈

好的没问题,谢谢你!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表