找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3455|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

在KEIL中不同數(shù)據(jù)類(lèi)型計(jì)算出錯(cuò)的解決方法(承接單片機(jī)項(xiàng)目開(kāi)發(fā))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:63113 發(fā)表于 2017-9-16 15:50 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 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ù)10000000010000000后面加上限定符號(hào)UL(Unsigned Long)之后,問(wèn)題得到解決。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表