|
發布時間: 2019-6-17 17:38
正文摘要:如圖,從數組里取出來的值經過計算不對!!關于變量的定義: u8 time1,time2, time3,time4; u16 time5,time6;   ... |
yzwzfyz 發表于 2019-6-18 08:23 謝謝大佬指導 |
suncat0504 發表于 2019-6-17 22:39 謝謝大佬指教,我試試 |
|
寫程序時應盡量回避不確定的因素,因為你不能確定編譯平臺是如何編譯它的。 本例:如果先移位,后轉換。則16位的數制,移不出個32位的結果,多余則溢出丟棄。 如果先轉換,后移位則是可以的。 既然你不能確定,就分兩步一定要處理,一步先轉換,再一步進行移位。 學會規避不確定的因素,以保證正確率。 |
|
涉及到指針的操作了,一定要小心,指針指向什么類型,意味著占用存儲空間的不同。不如char行占用一個單元(字節單位),兩位的整形,占用兩個單元。用指針賦值的時候,會根據指針的類型,從內存中取出對應長度的單元,組織成數據,然后賦值給接受對象。當有不同類型之間的賦值時,就涉及到自動轉換的問題。小往大轉,問題不大(但也涉及有符號時的出現問題)。大往小轉,會丟數據。另外數據類型占用內存單元,還涉及高位、低位的存儲順序,這個也一定要考慮,很重要。 你想要正確的結果,不如直接用time5=time1*256+time2;類似這樣的計算來得可靠。 |