找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2463|回复: 0
收起左侧

8位单片机里很会疏忽且常犯的一个错误

[复制链接]
ID:68618 发表于 2014-11-22 14:27 | 显示全部楼层 |阅读模式
有时候计算溢出,但是程序编译不会报错,昨天在客户现场调试,10位的数字,这10位数字大小且不会超过0XFFFFFFFF,变成四个字节的16进制,然后每个字节再由低到高的输出。一开始试了几个,以为OK了,正好碰到一个,就一位数字出现了异常。
假设一个十位数字:1234787890,9*10,8*100,7*1000都是自动默认转成INT变量的,8*10000超过65535,系统编译后还是默认INT的,这里要加强制转换成LONG INT,是很容易疏忽的一个地方,7*100000,因为100000已经是LONG INT了,所以出来的临时数据默认也是LONG INT,如果计算时前面全部强制转换成LONG INT也就不会出现这个问题了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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