[問題] 新手C語言請教

看板C_and_CPP (C/C++)作者 (淡定~)時間10年前 (2016/03/31 18:43), 編輯推噓2(203)
留言5則, 5人參與, 最新討論串1/1
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1459420986.A.16E.html

03/31 20:03, , 1F
你要看你的MCU硬體,以及Compiler怎麼做的
03/31 20:03, 1F

03/31 23:20, , 2F
施主,這個問題應該要問你自己
03/31 23:20, 2F

04/01 09:20, , 3F
float使用IEEE754格式 所以不要亂cast
04/01 09:20, 3F

04/01 09:58, , 4F
感謝各位大大教導,目前打算直接用a = (c-40)*(b/32767);
04/01 09:58, 4F

04/01 10:03, , 5F
注意整數相除的結果是不是你要的
04/01 10:03, 5F
文章代碼(AID): #1M_Fyw5k (C_and_CPP)
文章代碼(AID): #1M_Fyw5k (C_and_CPP)