C: Convertir signé non signé
-
26-09-2019 - |
Question
En fait, je l'ai (probablement) un problème "simple". Je ne sais pas comment transformer un entier signé à un entier non signé.
Mon code:
signed int entry = 0;
printf("Decimal Number : ");
scanf("%d", &entry);
unsigned int uEntry= (unsigned int) entry;
printf("Unsigned : %d\n", uEntry);
Si j'envoie la valeur non signée à la console (voir ma dernière ligne de code), je reçois toujours un retour entier signé.
Pouvez-vous me aider?
Merci beaucoup!
Cordialement, pro
La solution
printf("Unsigned : %u\n", uEntry);
// ^^
Vous devez utiliser le prescripteur de %u
pour dire au runtime printf
que le uEntry
est un unsigned int
. Si vous utilisez la fonction %d
printf
s'attendra un int
, ainsi réinterpréter votre dos d'entrée à une valeur signée.
Autres conseils
Append ces deux lignes à la fin de votre code, et vous comprendrez ce qui se passe.
printf("entry: signed = %d, unsigned = %u, hex = 0x%x\n", entry, entry entry);
printf("uEntry: signed = %d, unsigned = %u, hex = 0x%x\n", uEntry,uEntry,uEntry);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow