int in char



  • guten tag!

    ich brauch ne 16 bit feld in char!

    ich hab da mal ne verständnisfrage..
    wenn ich zb
    char=128; //dann schreibt er wirklich 1000 0000 in das byte?!
    char='A' // dann denn ascii code vom buchstaben a?!

    wie kann ich mir die zahl dann später ausgeben?



  • #include <iostream.h>
    using namespace std;
    int main(int argc, char* argv[])
    {
        char bla = 128;
        cout << bla << endl;
        bla = 'A':
        cout << bla << endl;
    }
    


  • Ja, 'char' ist ein 8-Bit Ganzzahltyp (und char-Literale haben einen Wert entsprechend ihrem ASCII-Code). Die Ein-/Ausgabefunktionen von C++ (über iostreams) wandeln diese Zahlenwerte dann um in das entsprechende Zeichen (nach ASCII-Code) - wenn du den Zahlenwert benötigst, mußt du ihn casten:

    char c = ...;
    cout<<c<<endl; //Ausgabe als ASCII-Zeichen
    cout<<(int)c<<endl; //Ausgabe als Zahlenwert
    

    Einen 16-Bit-Wert wirst du nicht in einen einzelnen char unterbringen können, aber du könntest ihn auf zwei char's aufteilen:

    short val = ...;
    char hi = (val>>8)&0xFF;//obere Hälfte
    char lo = val&0xFF;     //untere Hälfte
    


  • c++ hat noch wchar_t als 16 bit typ.


  • Mod

    thordk schrieb:

    c++ hat noch wchar_t als 16 bit typ.

    Der zu wchar_t gehörende integrale Grundtyp ist implementationsspezifisch.



  • achja, ganz vergessen, dass ausser char in c++ ja nix zuverlässig is Oo


Anmelden zum Antworten