C: Umrechnen in unsigned unterzeichnet
-
26-09-2019 - |
Frage
Eigentlich habe ich (wahrscheinlich) ein "einfaches" Problem. Also ich weiß nicht, wie eine Ganzzahl mit Vorzeichen in einer ganzen Zahl ohne Vorzeichen zu werfen.
Mein Code:
signed int entry = 0;
printf("Decimal Number : ");
scanf("%d", &entry);
unsigned int uEntry= (unsigned int) entry;
printf("Unsigned : %d\n", uEntry);
Wenn ich den Wert ohne Vorzeichen an die Konsole (siehe meine letzte Codezeile) senden, habe ich immer eine Ganzzahl mit Vorzeichen zurück.
Können Sie mir helfen?
Vielen Dank!
Mit freundlichen Grüßen, pro
Lösung
printf("Unsigned : %u\n", uEntry);
// ^^
Sie müssen die %u
Spezifizierer verwenden, um die printf
Laufzeit zu sagen, dass die uEntry
ein unsigned int
ist. Wenn Sie die %d
Funktion printf
wird eine int
erwarten, so dass Sie Ihre Eingabe wieder auf einen Wert mit Vorzeichen neu interpretieren.
Andere Tipps
Anfügen dieser beiden Zeilen am Ende des Codes, und Sie würden verstehen, was los ist.
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);