|
本帖最后由 sinside 于 2021-9-15 13:08 編輯
首先, 假設(shè)你的通訊是對(duì)的(我沒(méi)有細(xì)看你的程序), 先只驗(yàn)證下面的程序是否正確:
switch (len)
{
case 2:e=b;b=0; break;
case 3:e=b*10+c;break;
case 4:e=b*100+c*10+d;break;
}
假設(shè)你的輸入(設(shè)置斷點(diǎn)或者單獨(dú)把這段程序直接執(zhí)行) 在進(jìn)程序前 把b的值設(shè)置成0xA1, len分別設(shè)置成 2, 3, 4, c = 0, d = 0, 看看len=2的時(shí)候e計(jì)算是否正確, len=3的時(shí)候e的計(jì)算是否正確, len=4的時(shí)候是否正確.
如果都正確, 那么你原來(lái)不正確, 是否是有什么條件與上面的設(shè)置不一樣? 才導(dǎo)致結(jié)果不正確?
再逐一排查是否是變量的類(lèi)型問(wèn)題, 還是b的值問(wèn)題, 還是c的值問(wèn)題, 還是e, len的值哪一個(gè)有問(wèn)題?
上面說(shuō)的只是一種調(diào)試的方法, 不知道我是不是說(shuō)清楚了? (就是你的計(jì)算就放在哪里, 進(jìn)計(jì)算前, 所有的條件都定了, 看看結(jié)果是不是你預(yù)料的, 如果不是就逐一排查各種條件)
|
|