C: Conversione firmato unsigned
-
26-09-2019 - |
Domanda
In realtà non ho (probabilmente) un problema "semplice". Quindi non so come lanciare un intero con segno a un numero intero senza segno.
Il mio codice:
signed int entry = 0;
printf("Decimal Number : ");
scanf("%d", &entry);
unsigned int uEntry= (unsigned int) entry;
printf("Unsigned : %d\n", uEntry);
Se invio il valore senza segno alla console (vedere la mia ultima riga di codice), ho sempre arrivare di nuovo un intero con segno.
Mi potete aiutare?
Grazie mille!
Cordiali saluti, pro
Soluzione
printf("Unsigned : %u\n", uEntry);
// ^^
È necessario utilizzare l'identificatore %u
per raccontare il runtime printf
che la uEntry
è un unsigned int
. Se si utilizza la funzione %d
printf
si aspettano un int
, quindi reinterpretare la schiena di ingresso ad un valore con segno.
Altri suggerimenti
Aggiungi i seguenti due linee alla fine del codice, e si dovrebbe capire cosa sta succedendo.
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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow