同是一种语言,在keil和VC++6.0中的计算结果居然不一样?

我在keil里有个计算公式,编译后焼入单片机,不能正常运行,于是乎,我用计算器手工计算得出的答案数字直接赋予address,就可正常运行。然后我用vc++6.0计算得出数... 我在keil里有个计算公式,编译后焼入单片机,不能正常运行,于是乎,我用计算器手工计算得出的答案数字直接赋予address,就可正常运行。然后我用vc++6.0计算得出数据也和手工计算结果一样,赋予address后,均可正常运行。
那这么说是编译器的问题了?
同样是C语言,怎么会出现在这种情况,以前做很多涉及到计算的都是用vc模拟完后再上keil的没有发现这样的问题哦。就好像我用wps和word写出来的字,都是汉字,但是看起来不一样,就好像我用不同的计算器不同的算盘算出来的数不一样。。。真是奇葩了。。。
望各位资深工程师详解,谢过了先。
展开
 我来答
bhtzu
2015-09-07 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4496万
展开全部
应该是keil里面常量溢出。
16位系统,在进行数值运算的时候,中间结果如果没有特殊声明,会使用标准int(16位)保存。
你尝试一下,在keil里面这样:
address = 0x22242C;
address += .....
先做长整数赋值,看看是不是没有问题了。另外你也可以在运算中强制某个常量为长整数。
追问

就是定义的长整形,这应该是32位的就是4字节吧,应该可以放下的啊,莫非要定义成都变了?

百度网友22fd25ba4f
2015-09-07 · TA获得超过173个赞
知道小有建树答主
回答量:310
采纳率:100%
帮助的人:139万
展开全部
是不是单片机不是32位的啊,导致计算结果溢出啊
追问
和单片机位数没有关系,定义多少位编译器就放在单片机内多少位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式