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

Était-ce utile?

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
scroll top