打印
[STM32F1]

报警提示 integer operation result is out of range

[复制链接]
675|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renyaq|  楼主 | 2022-6-8 20:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
unsigned long cnt32;
unsigned  int x,y;
x=400;
y=400;

cnt32 = x*y;     编译正常不报警,但运算结果为0x27100的低16位0x7100,而不0x27100

cnt32 = 400*400;     报警提示 integer operation result is out of range

请问,怎样才能得到正确结果.

使用特权

评论回复
沙发
llljh| | 2022-6-8 20:13 | 只看该作者
cnt32 =(unsigned long ) x*y;

使用特权

评论回复
板凳
heweibig| | 2022-6-8 20:20 | 只看该作者
感觉应该是类型不匹配吧。

使用特权

评论回复
地板
jlyuan| | 2022-6-8 20:23 | 只看该作者
能给我份F28027的编程素材吗,我自己不会弄啊,按步骤来操作,编译还是出错

使用特权

评论回复
5
pengf| | 2022-6-8 20:54 | 只看该作者
就是一开始要添加的头文件和源文件什么的

使用特权

评论回复
6
huangchui| | 2022-6-8 21:58 | 只看该作者
楼上强制进行类型转换的,是可以的。

使用特权

评论回复
7
wyjie| | 2022-6-8 22:01 | 只看该作者
unsigned long是几位啊,提示是已溢出了

使用特权

评论回复
8
stly| | 2022-6-8 22:03 | 只看该作者
unsigned long是几个字节,400*400=160000,超界了吧

使用特权

评论回复
9
huangchui| | 2022-6-8 22:07 | 只看该作者
楼主看看不是改变了类型了。

使用特权

评论回复
10
jlyuan| | 2022-6-8 22:09 | 只看该作者
转换结果直接强制转换类型导致类型不匹配。

使用特权

评论回复
11
chuxh| | 2022-6-8 22:10 | 只看该作者
这个需要在执行的过程中做数据类型的强制转换的。

使用特权

评论回复
12
xxrs| | 2022-6-8 22:13 | 只看该作者
这个经常会遇到的,处理办法的楼上也说了的。

使用特权

评论回复
13
wyjie| | 2022-6-8 22:14 | 只看该作者
这样的问题还是能很容易解决的。

使用特权

评论回复
14
chuxh| | 2022-6-8 22:16 | 只看该作者
应该是超出了类型限制了。

使用特权

评论回复
15
supernan| | 2022-6-8 22:18 | 只看该作者
类型不匹配,会自动截取满足被赋值类型的数据,而你直接400*400,编译器会先计算再赋值,这样相当于赋值的是个常数,所以会报错。

使用特权

评论回复
16
jlyuan| | 2022-6-8 22:19 | 只看该作者
类型不匹配的问题

使用特权

评论回复
17
renyaq|  楼主 | 2022-6-8 22:25 | 只看该作者
明白了,多谢大家讨论这么多哈

使用特权

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

本版积分规则

700

主题

10138

帖子

4

粉丝