这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 如何理解这个共用体跟结构体、数组的问题?

共7条 1/1 1 跳转至

如何理解这个共用体跟结构体、数组的问题?

工程师
2020-02-26 21:14:08     打赏

上面定义的共用体。

然后下面是读取的值(KEIL MDK编译器),为何红框里红圈的值不是5个F,

而是这样FFFFF




关键词: KEIL     MDK     编译器     结构体     数组    

工程师
2020-02-26 21:19:55     打赏
2楼

nt=32bit
short=16bit
char=8bit

5个F,你说用什么类型表示?


工程师
2020-02-26 21:21:56     打赏
3楼

有点复杂


工程师
2020-02-26 21:23:38     打赏
4楼

bit 和 value 是共用关系,bit内的各个field不是共用关系。


工程师
2020-02-26 21:24:57     打赏
5楼

数据类型有8位的、16位的、32位的,没有20位的。位域的数据类型是看它前面的声明,跟占用的位宽度没有关系。即使是int32_t xxx : 1; xxx的类型依然是int32_t类型,只不过只用了1位罢了。


工程师
2020-02-26 21:27:28     打赏
6楼

涉及到bit对齐问题,
建议你可以看看地址是不是一样。
比如看一下over_discharge的地址和value[7]是不是一样。可能上面的bit定义中间留了空白。


工程师
2020-02-26 21:31:16     打赏
7楼

这个是因为结构体对齐的问题,先看下你这样用位域到底占用了多少个字节哦。


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]