Comparer un USHORT à un entier (int)??!

Résolu
Aumenov Messages postés 9 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 13 janvier 2008 - 24 déc. 2007 à 16:29
Aumenov Messages postés 9 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 13 janvier 2008 - 24 déc. 2007 à 16:56
Salut à tous,

J'ai un petit problème, les experts parmi vous en ont sans doute la réponses.

Soit le bout de code suivant:
typedef struct _KEY_DATA {
     USHORT KeyData;
     LIST_ENTRY ListEntry;
} KEY_DATA;

.....
KEY_DATA * kData;
char keys[256];
........
// on fait des traitements
........
DbgPrint("the kData->KeyData is : %x\n",kData->KeyData);
    if (kData->KeyData == 10) {
     strcpy (keys, "my chain ");
     DbgPrint("test keys: %s\n", keys);
    }
    else DbgPrint("test failure!\n");

Avec le DbgPrint(), je sais que kData->KeyData est égale à 10, c'est qui est affiché!
quand je fais le test if (kData->KeyData == 10), le test échoue!! Le message test failure est affiché! Pourtant je compare la valeur kData->KeyData à 10!!! je comprends pas...

Merci pour votre aide...

3 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 déc. 2007 à 16:39
Hmmm 10 en décimal ou en hexa ?
Car DbgPrint("the kData->KeyData is : %x\n",kData->KeyData);
%x fait afficher la valeur en hexadécimal.
Cependant, tu compares à une valeur décimal.
Si c'est de l'hexa c'est 0x10

Sinon, je n'ai aucune problème à comparer un USHORT à une valeur inférieur ou égal à 0xFF.

C++ (@++)<!--
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 déc. 2007 à 16:41
"Sinon, je n'ai aucune problème à comparer un USHORT à une valeur inférieur ou égal à 0xFF."

Oups, c'est plutôt 0xFFFF

C++ (@++)<!--
0
Aumenov Messages postés 9 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 13 janvier 2008 4
24 déc. 2007 à 16:56
effectivement c'est 10 en hexadecimal, il fallait mettre 0x10....
Merci
0
Rejoignez-nous