stm8长整型赋值失效

2019-03-23 17:50发布

最近搞一个项目,用stm8,编译环境是stvd
QQ图片20170119113234.png
读写ID都没有问题,把一个unsigned char 数组赋给一个u32位,从16位到31位,要不就是ffff,要不就是不显示,是编译器问题,还是什么问题。
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
lcofjp
1楼-- · 2019-03-24 00:23
 精彩回答 2  元偷偷看……
lcofjp
2楼-- · 2019-03-24 00:40
貌似是unsigned long更好一点,所以应该是
  1. pubf[2]<<16UL;
复制代码
或者
  1. (unsigned long)pubf[2]<<16;
复制代码


仙景
3楼-- · 2019-03-24 02:49
lcofjp 发表于 2017-1-19 11:48
是数据类型的问题,你8位编译器的int型一般都是16位的,而字面量没特殊指定也是int,所以像
这个表达式得 ...

在后面加L也不行,也是一样的结果。前面加强制也不行。
lcofjp
4楼-- · 2019-03-24 07:17
 精彩回答 2  元偷偷看……
仙景
5楼-- · 2019-03-24 11:59
lcofjp 发表于 2017-1-19 12:02
我不相信……rebuild一下再调试,除非是编译器有bug,如果不行你就调调汇编代码

是不行啊,我一开始也觉得是类型对齐问题,加了也不行的,我都试了,就当是编译器有问题吧
lruifoot
6楼-- · 2019-03-24 12:42
不是编译器的问题,位运算要注意CPU字长的问题

一周热门 更多>