stm 64位整數加減乘除時須注意的一點

最近在一個項目中使用stm32f405做數據採集,要對採集的65536個數據進行累加、乘累加等操作。測試的時候發現,計算結果不對,單步跟蹤發現,幾個數之後就已經溢出了,於是把計算後的結果強制轉換爲i64位,可是問題依舊,查看反彙編,發現沒有使用到相關的多數據操作指令,覺得很奇怪,於是把公式中的每一個變量對進行了顯式的強制類型轉換,結果正確了。

描述:stm32,64位跟32位數混合運算時計算結果不對

解決方法:對每一個操作數都進行顯式強制類型轉換,可確保計算結果的正確性。


心得:我們在寫程序的時候,一廂情願的認爲,編譯器會爲我們做一切隱式數據類型的轉換,但,事實往往不是這樣,so,我們應該在需要進行類型轉換的時候就必須使用強制類型轉換,哪怕編譯器會進行隱式轉換操作。萬一,編譯器掉鏈子了呢。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章