作者nendi (淡定~)
看板C_and_CPP
标题[问题] 新手C语言请教
时间Thu Mar 31 18:43:00 2016
开发平台(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可用,很多地方让我很苦恼,如果有大大愿意教导一下的话,我会很感谢
的
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.18.157.138
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1459420986.A.16E.html
1F:→ james732: 你要看你的MCU硬体,以及Compiler怎麽做的 03/31 20:03
2F:→ MOONRAKER: 施主,这个问题应该要问你自己 03/31 23:20
3F:推 techo0116: float使用IEEE754格式 所以不要乱cast 04/01 09:20
4F:→ nendi: 感谢各位大大教导,目前打算直接用a = (c-40)*(b/32767); 04/01 09:58
5F:推 IKAFIRE: 注意整数相除的结果是不是你要的 04/01 10:03