本帖最后由 yonko 于 2017-9-17 18:58 編輯
之前在一個51單片機開發項目中進行數值運算,但是再編譯調試過程中老是出錯,定位至出錯的代碼,發現是不同數據類型之間的計算不匹配。當長短數據類型的數據之間進行計算時,建議把短位數據轉換為長位數據,達到數據類型格式盡量一致(我處長期承接單片機項目開發、電路板設計等,QQ2531263726)。 ‘-----------------------------------出現的問題----------------------------------- unsigned long sj=0; unsigned char shijian=15 ; sj= (unsignedlong)(1*100000000+((shijian/10)%10)*10000000; ‘用上式計算式經常出現未知錯誤。 ‘-----------------------------------解決方案----------------------------------- ‘計算公式改為: sj= (unsignedlong)(1*100000000UL+((shijian/10)%10)*10000000UL; ‘在數據100000000和10000000后面加上限定符號UL(Unsigned Long)之后,問題得到解決。
|