怎样才能得到正确结果.

[复制链接]
1661|20
 楼主| yszong 发表于 2016-6-9 15:27 | 显示全部楼层 |阅读模式
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

请问,怎样才能得到正确结果.
jiajs 发表于 2016-6-9 15:30 | 显示全部楼层
    cnt32 =(unsigned long ) x*y;
zhenykun 发表于 2016-6-9 15:32 | 显示全部楼层
也有一块C2000,但还没用上,顶一个
wyjie 发表于 2016-6-9 15:33 | 显示全部楼层
应该是类型不匹配吧。
 楼主| yszong 发表于 2016-6-9 15:35 | 显示全部楼层
使用强制类型转换。
heweibig 发表于 2016-6-9 15:36 | 显示全部楼层
你好,能给我份F28027的编程素材吗,我自己不会弄啊,按步骤来操作,编译还是出错
 楼主| yszong 发表于 2016-6-9 15:40 | 显示全部楼层
编程素材?
heweibig 发表于 2016-6-9 15:42 | 显示全部楼层
就是一开始要添加的头文件和源文件什么的
 楼主| yszong 发表于 2016-6-9 15:44 | 显示全部楼层
好的,我找一下发给你哈
vivilzb1985 发表于 2016-6-9 21:47 | 显示全部楼层
jiajs 发表于 2016-6-9 15:30
cnt32 =(unsigned long ) x*y;

楼上强制进行类型转换的,是可以的。
Brand2 发表于 2016-6-14 19:17 | 显示全部楼层
unsigned long是几位啊,提示是已溢出了
迪卡 发表于 2016-6-14 20:09 | 显示全部楼层
unsigned long是几个字节,400*400=160000,超界了吧
jimmhu 发表于 2016-6-19 22:14 | 显示全部楼层
一般都是变量定义的
jimmhu 发表于 2016-6-19 22:17 | 显示全部楼层
你看看不是改变了类型了。
lihuami 发表于 2016-6-20 22:26 | 显示全部楼层
应该是类型不匹配造成的。
lihuami 发表于 2016-6-20 22:28 | 显示全部楼层
转换结果直接强制转换类型。
angerbird 发表于 2016-6-21 23:02 | 显示全部楼层
这个需要在执行的过程中做数据类型的强制转换的。
zhangbo1985 发表于 2016-6-22 21:11 | 显示全部楼层
这个经常会遇到的,处理办法的楼上也说了的。
tongbu2015 发表于 2016-6-23 22:25 | 显示全部楼层
这样的问题还是能很容易解决的。。。
sdlls 发表于 2016-6-23 22:33 | 显示全部楼层
你进行类型转换了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

830

主题

11379

帖子

4

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