Konvertierung unsigned short in char
-
Hallo,
wenn ich folgendes tue:
unsigned short us = 'a';
char cc = c;erhalte ich immer die Fehlermeldung
"Konvertierung von 'unsigned short' in 'char', moeglicher Datenverlust"wie konvertiere ich richtig?
Danke und Gruß!
-
von short kann man schlecht auf char casten, da short nur halb so groß ist wie char,wenn du keine warnings mehr haben willst, caste von int.
-
Hallo, das habe ich gerade mit sizeof überprüft, stimmt aber nicht:
printf("sizeof unsigned short: %d\n", sizeof(unsigned short));
printf("sizeof unsigned char: %d\n", sizeof(unsigned char));
printf("sizeof signed char: %d\n", sizeof(signed char));ergibt die Ausgabe:
2
1
1
-
Hi,
richtig, smilie.
char belegt ein Byte und short 2, long belegt 4 Byte.Somit ist short doppelt so groß wie char und da int auf 32-Bit Prozessorn gleich long ist, wäre int hier doppelt so groß wie short.
Du kannst also nur verlustfrei von char nach char casten.Desweieteren solltest du in C++ den static_cast statt dem C Cast verwenden.
MfG MAV
-
hmm dann sind meine infos veraltet...
-
Naja, falsch trifft es wohl eher, das einzige was noch möglich wäre, wäre dass auf 16 Bit Prozessorn int = short ist, aber selbst dann würde es ja nicht passen.