標(biāo)題: 為什么這函數(shù)判斷失敗 [打印本頁]

作者: Graves    時間: 2024-5-13 15:10
標(biāo)題: 為什么這函數(shù)判斷失敗
u32 TEST_FUN(void)
{
    u16 low,high;
    u32 re;
    low=0xAAAA;
    high=0x5555;
    re=(u32)(high<<16|low);//////////                           [2:].zfill(8)
    return re;
}
if(TEST_FUN()==0x5555AAAA)
{
//判斷失敗,為啥這re不是0x5555AAAA?
}

作者: LaoYuTou    時間: 2024-5-13 15:37
強制類型轉(zhuǎn)換位置錯了  re=((u32)high<<16|low);//////////
作者: LaoYuTou    時間: 2024-5-13 15:38
你對結(jié)果強制類型轉(zhuǎn)換,運算錢high還是u16類型,應(yīng)該把high強制類型轉(zhuǎn)換。類型全換為u32就好了。
作者: Graves    時間: 2024-5-13 15:51
LaoYuTou 發(fā)表于 2024-5-13 15:38
你對結(jié)果強制類型轉(zhuǎn)換,運算錢high還是u16類型,應(yīng)該把high強制類型轉(zhuǎn)換。類型全換為u32就好了。

感謝,我再試試
作者: Graves    時間: 2024-5-13 16:01
qq475878026 發(fā)表于 2024-5-13 15:51
感謝,我再試試

確實是這樣,學(xué)藝不精了。之前AD轉(zhuǎn)換平均運算也沒發(fā)現(xiàn)這問題,到這里才發(fā)現(xiàn)問題
作者: rundstedt    時間: 2024-5-16 22:50
完全沒必要移位,太浪費時間了。
u32 i;
u16 *p=&i;
*p=0x5555;
++p;
*p=0xaaaa;

看上去跟你的代碼差不多,但實際上沒幾個機器碼,比你的執(zhí)行起來快多了。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1