keil编译后code的大小问题

三条语句编译后,code分别是后面注释的大小。全部变量均为无符号整形,怎么会差那么远?... 三条语句编译后,code分别是后面注释的大小。全部变量均为无符号整形,怎么会差那么远? 展开
 我来答
wolf_lhy
2013-04-16 · TA获得超过6609个赞
知道大有可为答主
回答量:1090
采纳率:66%
帮助的人:550万
展开全部
这个很简单,首先先说最后一条,你涉及到了小数,也就是浮点数的计算,在所有的单片机中,有的带有浮点数计算,比如高级的ARM,有些不带,凡是不带浮点数硬件计算模块的,都要通过语言来处理,浮点数的计算是非常复杂的,所以,最后一个代码最大,当然,结果也最精确。
再说第一个,为什么会最小,因为单片机会先计算 625/10000,你认为结果是多少?0.0625?
错,如果你的res是浮点型的,那么,计算的结果可能是 0.0625,如果你的res是整形的,那么,计算的结果是0,而这里,我敢肯定,你的res是整形的,相当于再计算 tem = res*0,结果是0,也就是说,你第一条是个错误的,得到的结果恒0
而第2条语句,先是计算 res*625,再去计算除法,这样,不会出现常数结果,所以耗时比第一条语句大。
如果你的结果要求比较准确,我建议你用第三条语句,虽然费时间。
另外,你完全可以用查表法来完成,而不必要用浮点数计算,毕竟51单片机的能力比较差。
bxf0817
2013-04-16 · TA获得超过2162个赞
知道小有建树答主
回答量:1348
采纳率:0%
帮助的人:1072万
展开全部
因为你注释掉的语句里包含了乘法和除法运算,单片机不能直接算除法的,需要编译器来用代码实现,很占用code。而且你最后一行还有浮点数的运算,这个单片机也是不能直接算浮点的,需要编译器用大量代码来实现的。所以差距很大!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悦多米二娃cv
推荐于2018-03-15 · TA获得超过409个赞
知道小有建树答主
回答量:491
采纳率:0%
帮助的人:67.2万
展开全部
是看Code。不过Code的大小并不一定等于烧到芯片里的大小。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式