[問題] 新手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