Mon programme présente un comportement étrange lorsque je le passe dans le débogueur. Dans l'extrait suivant, il vérifie pktNum != ~invPktNum
puis procède directement à la seconde instruction return 1;
. Le débogueur montre que pktNum
est un caractère non signé 0x01 et invPktNum
est un caractère non signé 0xFE.Pourquoi une partie de mon code est-elle ignorée?
/* Verify message integrity. */
if (pktNum != ~invPktNum) {
return 1;
}
ccrc = crc16_ccitt(msg, XModem_Block_Size);
if ((((ccrc>>8) & 0xFF) != crcBuf[0])
|| ((ccrc & 0xFF) != crcBuf[1])) {
return 1;
}
'! InvPktNum' est' 0'. –
OH MON DIEU! Il a fait exactement ce que vous lui avez dit - il a testé que 0x1! = 0, et a renvoyé 1. Arrêtez les presses! –
Désolé, je voulais dire '~'. Je l'ai changé pour '!' parce que je pensais que 0x01 et ~ 0xFE seraient égaux, mais mon code ne semble toujours pas le penser. – Justin