打印

计算结果temp值应该是0xB1008,可是现在结果是0X1008

[复制链接]
405|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuww|  楼主 | 2017-6-29 22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<math.h>

void main(void)
{
unsigned long temp;
temp=725*1000;
}
//计算结果temp值应该是0xB1008,可是现在结果是0X1008,是什么原因啊。
沙发
zhanglli| | 2017-6-29 22:59 | 只看该作者

temp=725ul*1000;

溢出了,与KEIL没有关系

使用特权

评论回复
板凳
zhuww|  楼主 | 2017-6-29 23:01 | 只看该作者
谢谢,我的理解是不是在计算过程中要用到缓冲寄存器?

使用特权

评论回复
地板
lium| | 2017-6-29 23:02 | 只看该作者


725和1000,你没有指定类型,于是他们是int型。最大就是0xFFFF。

使用特权

评论回复
5
hanwe| | 2017-6-29 23:03 | 只看该作者
你需要把725或者1000指定为long型或者是unsigned long型。

使用特权

评论回复
6
yufe| | 2017-6-29 23:05 | 只看该作者

我以为又有人发现KEIL的BUG的。。。。

溢出啦,默认是INT

使用特权

评论回复
7
zhuww|  楼主 | 2017-6-29 23:08 | 只看该作者
结贴了,多谢大家讨论这么多哈,呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

893

主题

8252

帖子

1

粉丝