![]() |
跟if語句沒關(guān)系,只同位運算有關(guān),再補補課應(yīng)該能整明白 |
if (dat&0x80),這條語句永遠(yuǎn)為真,因為不論dat是什么值,&0x80后都不可能為0,所以else永遠(yuǎn)不會被執(zhí)行 if ((dat&0x80)==0x80) ,是判斷dat&0x80后,是否與0x80相等作為if判斷執(zhí)行條件,當(dāng)dat=0或0x80,判斷為真,執(zhí)行P1=1; 其它值均執(zhí)行else,P1=0 |
條件判斷是二值判斷 |
if (dat&0x80) &0x80判斷是否為真,if ((dat&0x80)==0x80) 先&0x80的結(jié)果再判斷等于 0x80不 |
判斷式邏輯錯誤,因為if (dat&0x80==0x80)中括號內(nèi)的運算結(jié)果是0x00為假 而if (dat&0x80)括號內(nèi)的運算結(jié)果是0x80,為真 這是因為==的優(yōu)先級比&高,正確的邏輯是if ((dat&0x80)==0x80) |
Powered by 單片機(jī)教程網(wǎng)