作者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/m.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