熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2019-6-17 17:38
正文摘要:如圖,從數(shù)組里取出來(lái)的值經(jīng)過(guò)計(jì)算不對(duì)!!關(guān)于變量的定義: u8 time1,time2, time3,time4; u16 time5,time6;   ... |
yzwzfyz 發(fā)表于 2019-6-18 08:23 謝謝大佬指導(dǎo) |
suncat0504 發(fā)表于 2019-6-17 22:39 謝謝大佬指教,我試試 |
寫(xiě)程序時(shí)應(yīng)盡量回避不確定的因素,因?yàn)槟悴荒艽_定編譯平臺(tái)是如何編譯它的。 本例:如果先移位,后轉(zhuǎn)換。則16位的數(shù)制,移不出個(gè)32位的結(jié)果,多余則溢出丟棄。 如果先轉(zhuǎn)換,后移位則是可以的。 既然你不能確定,就分兩步一定要處理,一步先轉(zhuǎn)換,再一步進(jìn)行移位。 學(xué)會(huì)規(guī)避不確定的因素,以保證正確率。 |
涉及到指針的操作了,一定要小心,指針指向什么類(lèi)型,意味著占用存儲(chǔ)空間的不同。不如char行占用一個(gè)單元(字節(jié)單位),兩位的整形,占用兩個(gè)單元。用指針賦值的時(shí)候,會(huì)根據(jù)指針的類(lèi)型,從內(nèi)存中取出對(duì)應(yīng)長(zhǎng)度的單元,組織成數(shù)據(jù),然后賦值給接受對(duì)象。當(dāng)有不同類(lèi)型之間的賦值時(shí),就涉及到自動(dòng)轉(zhuǎn)換的問(wèn)題。小往大轉(zhuǎn),問(wèn)題不大(但也涉及有符號(hào)時(shí)的出現(xiàn)問(wèn)題)。大往小轉(zhuǎn),會(huì)丟數(shù)據(jù)。另外數(shù)據(jù)類(lèi)型占用內(nèi)存單元,還涉及高位、低位的存儲(chǔ)順序,這個(gè)也一定要考慮,很重要。 你想要正確的結(jié)果,不如直接用time5=time1*256+time2;類(lèi)似這樣的計(jì)算來(lái)得可靠。 |
Powered by 單片機(jī)教程網(wǎng)