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

È stato utile?

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