查看: 93|回复: 3
收起左侧

[PIC单片机] PICC编译器乘法运算数据类型的疑惑

[复制链接]
     

1

主题

2

帖子

6

积分

实习生

 楼主| 发表于 2017-9-8 12:01 | 显示全部楼层 |返回版面||阅读模式
型号PIC16F1829
编译器PICC-V9.83

unsigned long temp;
unsigned int aaa;

temp = 1600*aaa;  // aaa变量是传递进来的,范围 0~4000

结果 temp的值是一个不确定的 unsigned int 类型。多出检查后无果,然后换了种写法

temp = (unsigned long)aaa*1600;  // aaa变量是传递进来的,范围 0~4000

这样表达就正常了。PICC编译器严格到这种程度吗?PICC手册中我也没有找到相关说明,哪位道友详细指点一下!

0

主题

17

帖子

51

积分

初级技术员

发表于 2017-9-8 22:42 | 显示全部楼层 |返回版面
数据类型不一样能直接乘?
     

1

主题

2

帖子

6

积分

实习生

 楼主| 发表于 2017-9-9 12:16 | 显示全部楼层 |返回版面
郑朝清 发表于 2017-9-8 22:42
数据类型不一样能直接乘?

可以啊,编译器会自动转换数据类型,例如uchar转换成uint再运算
unsigned char a,b;
unsigned int c;
c = a*b;

运算结果是没问题的

1

主题

115

帖子

376

积分

资深技术员

发表于 2017-9-15 10:47 | 显示全部楼层 |返回版面
对于pic芯片来说,最好不要做这种不同类型的数据计算,因为结果可能因为系统优化的原因变得飘忽不定
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

关闭

热门推荐上一条 /3 下一条

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