[问题] 新手C语言请教

楼主: nendi (米迪)   2016-03-31 18:43:00
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
16bit 的 MCU
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)

问题(Question):
您好,小弟是不常碰程式的新手
因为工作关系,接触了一个MCU为 16 bit 的模组,在做计算时,一直很怕会有溢位的问

想请教
如果一个整数和浮点数做相乘,在编译时,它是用浮点还是整数在记忆呢?
我实际的遇到的问题是
short int a,b = 8000,c;
我想要
a = ( b*(c - 40)/32767 );
因为怕溢位的关系
请问
a = (int)(b* ((c-40)/32767) )
这样写好?
还是
a = (int)((float)b* ((c-40)/32767) )
这样写好?
or anyelse?
由于只有16bit可用,很多地方让我很苦恼,如果有大大愿意教导一下的话,我会很感谢
作者: james732 (好人超)   2016-03-31 20:03:00
你要看你的MCU硬件,以及Compiler怎么做的
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-03-31 23:20:00
施主,这个问题应该要问你自己
作者: techo0116 (Techo)   2016-04-01 09:20:00
float使用IEEE754格式 所以不要乱cast
楼主: nendi (米迪)   2016-04-01 09:58:00
感谢各位大大教导,目前打算直接用a = (c-40)*(b/32767);
作者: IKAFIRE (没有)   2016-04-01 10:03:00
注意整数相除的结果是不是你要的

Links booklink

Contact Us: admin [ a t ] ucptt.com