找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2034|回复: 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也就不会出现这个问题了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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