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.


Anmelden zum Antworten