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