Keil C51 运算 *10000,数据老溢出,什么问题?

2020-01-17 19:10发布

啥不说,上图

QQ截图20131025224129.jpg (95.85 KB, 下载次数: 0) 下载附件 2013-10-25 22:41 上传


程序调了一个多小时才发现这问题,,,仿真一下,吓了身汗,不知道我做出去的产品有没有用到这种 *10000 



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
zuu0
1楼-- · 2020-01-17 23:30
本帖最后由 zuu0 于 2013-10-25 23:01 编辑

为什么错误出现在*10000 其它点十万,百万的都没问题,就一万有问题,并且在40000以后就不对了

目前解决方法,只有在乘 10000这个点上 强制转换成 10000L
summarize
2楼-- · 2020-01-18 04:02
a5=5*10000;
改写成:
a5=5;
a5*=10000;  试试

正规的写法应该是:  a5=5*(unsigned long int)10000;
valley
3楼-- · 2020-01-18 05:22
原因不是很显然么?
C51里面的int是2个字节,10000是int类型,4*10000还是int类型,但是溢出了就是。
zuu0
4楼-- · 2020-01-18 10:57
 精彩回答 2  元偷偷看……
youlongam
5楼-- · 2020-01-18 11:07
学习,学习!
3050311118
6楼-- · 2020-01-18 13:12
有道理                  

一周热门 更多>