打印

temp值错误

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

void main(void)
{
unsigned long temp;
temp=725*1000;
}
//计算结果temp值应该是0xB1008,可是现在结果是0X1008,是什么原因啊。

使用特权

评论回复
沙发
chuxh| | 2022-5-6 19:57 | 只看该作者

temp=725ul*1000;

溢出了,与KEIL没有关系

使用特权

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

使用特权

评论回复
地板
huangchui| | 2022-5-6 20:02 | 只看该作者
725和1000,你没有指定类型,于是他们是int型。最大就是0xFFFF。

使用特权

评论回复
5
jlyuan| | 2022-5-6 20:04 | 只看该作者
你需要把725或者1000指定为long型或者是unsigned long型。

使用特权

评论回复
6
juventus9554| | 2022-5-6 20:07 | 只看该作者

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

溢出啦,默认是INT

使用特权

评论回复
7
supernan| | 2022-5-6 20:09 | 只看该作者
硬件的抽象,看到这里,我非常激动,看来st终于意识到原来标准库的问题了,原来的标准库非常依赖于具体硬件细节,很难体现出使用库的优势,而且很难移植。

使用特权

评论回复
8
lizye| | 2022-5-6 20:10 | 只看该作者
非常好奇,st到底是如何把不同系列mcu的操作给封装起来的,是不是足够抽象,方便移植。

使用特权

评论回复
9
chuxh| | 2022-5-6 20:12 | 只看该作者
unsigned long temp; temp=725*1000;

使用特权

评论回复
10
dengdc| | 2022-5-6 20:15 | 只看该作者
数据溢出拉

使用特权

评论回复
11
zhuww|  楼主 | 2022-5-6 20:17 | 只看该作者

唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
12
tpgf| | 2022-6-2 19:03 | 只看该作者
数据溢出啦 呵呵呵

使用特权

评论回复
13
aoyi| | 2022-6-2 19:10 | 只看该作者
725默认是什么数据类型呢

使用特权

评论回复
14
nawu| | 2022-6-2 19:19 | 只看该作者
底层工作不容易做啊

使用特权

评论回复
15
zljiu| | 2022-6-2 19:51 | 只看该作者
为什么是那个数据溢出呢

使用特权

评论回复
16
gwsan| | 2022-6-2 20:00 | 只看该作者
其实像是这种问题可以分解开来进行判定

使用特权

评论回复
17
tfqi| | 2022-6-2 20:09 | 只看该作者
这个默认的数据类型有什么说法吗

使用特权

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

本版积分规则

893

主题

8252

帖子

1

粉丝