[C/C++] Problem bei Umwandlung von Int -> Char und wieder zurück

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Gibbon, 29. Mai 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 29. Mai 2008
    Problem bei Umwandlung von Int -> Char und wieder zurück

    Code:
    int main()
    {
     cout << (int) (char) 162; // gibt -94 aus
     
     return 0; 
    }
    Wieso gibt das -94 und nicht 162 aus?

    // Edit

    Mit

    Code:
    cout << (int) (unsigned char) 162;
    gehts! Wieso?
     
  2. 29. Mai 2008
    AW: Problem bei Umwandlung von Int -> Char und wieder zurück

    Hi!

    Weils nur bis 127 geht.
    American Standard Code for Information Interchange – Wikipedia
    C-Programmierung: Variablen und Konstanten – Wikibooks, Sammlung freier Lehr-, Sach- und Fachbücher

    Char = -128 bis 127.
    Unsigned char = 0 bis 255

    Mfg,

    Kolazomai
     
  3. 29. Mai 2008
    AW: Problem bei Umwandlung von Int -> Char und wieder zurück

    Weil ein char vorzeichebehaftet ist, und nur werte von -127 bis +127 darstellen kann. (127 im Minusbereich + 0 + 127 im Plusbereich = 256 = 2^8 ).

    Und da 162 größer als 127 ist, 'läuft' der char über und es gibt die Minuszahl (Hängt mit der Binärschreibweise und dem Zweierkomplement zusammen).

    Mit unsigned char hingegen gehts, weil das nen Wertebereich von 0 bis 255 hat und die 162 deshalb nich zu groß is.

    edit:
    Und jetz nochmal ganz genau
    162 binär: 10100010

    94 binär: 01011110 (Die 0 am Anfang dient dazu, die 8 Bits aufzufüllen)

    Jetzt die Zweierkomplement-Darstellung (damit kann man negative Zahlen binär ausdrücken):
    Zahl invertieren (0 zu 1 und 1 zu 0): 10100001
    1 dazuaddieren: 10100010

    Und wie man sieht, ist es das selbe:
    162: 10100010
    -94: 10100010

    Da der char ja eigentlich nur bis +127 geht, denkt der Compiler das is ne Zweierkomplement-Darstellung und gibt die Zahl negativ aus.
     
  4. 29. Mai 2008
    AW: Problem bei Umwandlung von Int -> Char und wieder zurück

    Alles klar, danke euch beiden^^
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.