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

Résolu
Signaler
Messages postés
9
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
13 janvier 2008
-
Messages postés
9
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
13 janvier 2008
-
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

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
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++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
"Sinon, je n'ai aucune problème à comparer un USHORT à une valeur inférieur ou égal à 0xFF."

Oups, c'est plutôt 0xFFFF

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