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