这个很简单,首先先说最后一条,你涉及到了小数,也就是浮点数的计算,在所有的单片机中,有的带有浮点数计算,比如高级的ARM,有些不带,凡是不带浮点数硬件计算模块的,都要通过语言来处理,浮点数的计算是非常复杂的,所以,最后一个代码最大,当然,结果也最精确。
再说第一个,为什么会最小,因为单片机会先计算 625/10000,你认为结果是多少?0.0625?
错,如果你的res是浮点型的,那么,计算的结果可能是 0.0625,如果你的res是整形的,那么,计算的结果是0,而这里,我敢肯定,你的res是整形的,相当于再计算 tem = res*0,结果是0,也就是说,你第一条是个错误的,得到的结果恒0
而第2条语句,先是计算 res*625,再去计算除法,这样,不会出现常数结果,所以耗时比第一条语句大。
如果你的结果要求比较准确,我建议你用第三条语句,虽然费时间。
另外,你完全可以用查表法来完成,而不必要用浮点数计算,毕竟51单片机的能力比较差。
因为你注释掉的语句里包含了乘法和除法运算,单片机不能直接算除法的,需要编译器来用代码实现,很占用code。而且你最后一行还有浮点数的运算,这个单片机也是不能直接算浮点的,需要编译器用大量代码来实现的。所以差距很大!
是看Code。不过Code的大小并不一定等于烧到芯片里的大小。