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

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top