Frage zu static_cast<char>



  • Hallo

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    /*/
    
    Konvertierung von long nach char
    
    /*/
    
    long longVar = 65;
    char charVar = static_cast<char>(longVar);
    
    cout << charVar;   // wieso hat charVar hier den Wert A
                       // charVar wurde doch in eine long variable umkonvertiert
    
    system("PAUSE");
    }
    


  • convert schrieb:

    Hallo

    // charVar wurde doch in eine long variable umkonvertiert
    

    Andersrum: longVar wurde in eine char-Variable konvertiert. charVar ist schließlich vom Typ char. Und auf deinem Systemn entspricht der Wert 65 dem Character 'A'.



  • Deswegen ja. Char wird als ASCII-Zeichen interpretiert (ASCII: A = 0x41 = 65).



  • Weil du kein Character (char) sondern eine Zahl (long) mittels cout ausgibst und diese enthält 65.

    long longVar = 65;
    // Beide Zeilen sind äquivalent
    char cA = 'A';
    char cA = static_cast<char>(longVar);
    cout << cA; // Ausgabe: A
    cout << longVar; // Ausgabe 65
    


  • Wofür sind denn dann Typekonvertierungen gut ?

    Weil anstatt static cast zu benutzen kann ich das ganze ja auch so machen:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    long longVar = 65;
    char charVar ;
    
     charVar = longVar;
    
     cout<< charVar;
    
    system("PAUSE");
    }
    //---------------------------------------------------------------------------
    


  • Dann meckert aber der Compiler, weil ein long größer als ein char sein kann und dann die Konvertierung Murks geben kann. Mit nem expliziten Cast sagst Du ihm, dass das schon so seine Richtigkeit hat.



  • Ah okay ty.


Anmelden zum Antworten