temp值错误

[复制链接]
579|9
 楼主| zhuww 发表于 2020-2-15 14:49 | 显示全部楼层 |阅读模式
#include<math.h>

void main(void)
{
unsigned long temp;
temp=725*1000;
}
//计算结果temp值应该是0xB1008,可是现在结果是0X1008,是什么原因啊。
zhanglli 发表于 2020-2-15 14:56 | 显示全部楼层

temp=725ul*1000;

溢出了,与KEIL没有关系
 楼主| zhuww 发表于 2020-2-15 14:59 | 显示全部楼层
谢谢,我的理解是不是在计算过程中要用到缓冲寄存器?
lium 发表于 2020-2-15 15:02 | 显示全部楼层
725和1000,你没有指定类型,于是他们是int型。最大就是0xFFFF。
hanwe 发表于 2020-2-15 15:05 | 显示全部楼层
你需要把725或者1000指定为long型或者是unsigned long型。
yufe 发表于 2020-2-15 15:09 | 显示全部楼层

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

溢出啦,默认是INT
zyf部长 发表于 2020-2-15 15:13 | 显示全部楼层
硬件的抽象,看到这里,我非常激动,看来st终于意识到原来标准库的问题了,原来的标准库非常依赖于具体硬件细节,很难体现出使用库的优势,而且很难移植。
chenjunt 发表于 2020-2-15 15:17 | 显示全部楼层
非常好奇,st到底是如何把不同系列mcu的操作给封装起来的,是不是足够抽象,方便移植。
 楼主| zhuww 发表于 2020-2-15 15:21 | 显示全部楼层
结贴了,多谢大家讨论这么多哈,呵呵
bbapple 发表于 2020-2-21 18:42 来自手机 | 显示全部楼层
unsigned long temp; temp=725*1000;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

893

主题

8252

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部