[应用相关] 报警提示 integer operation result is out of range

[复制链接]
 楼主| renyaq 发表于 2020-5-20 23:26 | 显示全部楼层 |阅读模式
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

请问,怎样才能得到正确结果.
morrisk 发表于 2020-5-20 23:29 | 显示全部楼层
cnt32 =(unsigned long ) x*y;
kangzj 发表于 2020-5-20 23:34 | 显示全部楼层
感觉应该是类型不匹配吧。
llia 发表于 2020-5-20 23:37 | 显示全部楼层

能给我份F28027的编程素材吗,我自己不会弄啊,按步骤来操作,编译还是出错
zyf部长 发表于 2020-5-20 23:40 | 显示全部楼层
就是一开始要添加的头文件和源文件什么的
songqian17 发表于 2020-5-20 23:42 | 显示全部楼层
楼上强制进行类型转换的,是可以的。
dingy 发表于 2020-5-20 23:45 | 显示全部楼层

unsigned long是几位啊,提示是已溢出了
pangb 发表于 2020-5-20 23:50 | 显示全部楼层
unsigned long是几个字节,400*400=160000,超界了吧
pangb 发表于 2020-5-20 23:52 | 显示全部楼层
楼主看看不是改变了类型了。
zyf部长 发表于 2020-5-20 23:55 | 显示全部楼层

转换结果直接强制转换类型导致类型不匹配。
yufe 发表于 2020-5-20 23:58 | 显示全部楼层
这个需要在执行的过程中做数据类型的强制转换的。
llljh 发表于 2020-5-21 21:18 | 显示全部楼层
这个经常会遇到的,处理办法的楼上也说了的。
pangb 发表于 2020-5-21 21:21 | 显示全部楼层

这样的问题还是能很容易解决的。
houcs 发表于 2020-5-21 21:23 | 显示全部楼层

应该是超出了类型限制了。
wangzsa 发表于 2020-5-21 21:27 | 显示全部楼层
类型不匹配,会自动截取满足被赋值类型的数据,而你直接400*400,编译器会先计算再赋值,这样相当于赋值的是个常数,所以会报错。
huanghuac 发表于 2020-5-21 21:30 | 显示全部楼层
类型不匹配的问题
 楼主| renyaq 发表于 2020-5-21 21:35 | 显示全部楼层

明白了,多谢大家讨论这么多哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

700

主题

10138

帖子

4

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

700

主题

10138

帖子

4

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