bool nach unsigned char casten?



  • bool b=true;
        unsigned char c=(unsigned char)b;
    

    - Hab's im Dev-C++ 4.9.9.0 getestet, läuft prima 😉



  • bool -> unsigned char ist eine Standardkonvertierung. Insofern ist überhaupt kein Cast notwendig. Wenn's unbedingt ein Cast sein soll, dann ist static_cast aber genau der richtige Operator.



  • wenn bool false ist:
    unsigned char == 0
    wenn bool true ist:
    unsigned char == 1

    Falls dir das noch nicht klar war
    bei mir gehen alle cast operatoren und es geht auch ohne casten!
    Ich verwende VC71

    mfg spjoe



  • stimmt den der compiler versucht automatisch den kleiner typ in den größeren zu konvertieren, d.h. bool zu uchar.
    bei dieser konvertierung sollte der compiler eigentlich nicht mekern (also mit warnings antworten, so wie ich oben schon erwaehnt hab 😃 )

    vielleicht koenntest du ja etwas code posten und ueber die warnings, "errors" berrichten, dann koennten wir dir sicher weiterhelfen



  • Windoof schrieb:

    bool b=true;
        unsigned char c=(unsigned char)b;
    

    - Hab's im Dev-C++ 4.9.9.0 getestet, läuft prima 😉

    Das ist aber jetzt ein C-Style cast. Dafür gibts in C++ extra funktionen

    unsigned char c = reinterpret_cast< unsigned char > ( b );
    

    MfG



  • bool nach unsigned char geht mit static_cast aber umgekehrt nicht? was muss man da machen?



  • die beste variante nen bool in irgendwas umzuwandeln is meiner meinung nach

    bool bValue = true;
    unsigned char ucValue = ( bValue == true );
    

    andersrum

    unsigned char ucValue = 120;
    bool bValue = ( ucValue != 0 );
    

    casts halte ich hier für unnötig



  • stimmt diese loesung waere vorzuziehen



  • Sovok schrieb:

    die beste variante nen bool in irgendwas umzuwandeln is meiner meinung nach

    bool bValue = true;
    unsigned char ucValue = ( bValue == true );
    

    Da bValue==true einen bool-Wert ergibt, ist die offensichtlich beste Variante

    unsigned char ucValue = (bValue == true) == true;
    

    Oder? Denk mal drüber nach.



  • Bashar schrieb:

    Da bValue==true einen bool-Wert ergibt, ist die offensichtlich beste Variante

    unsigned char ucValue = (bValue == true) == true;
    

    Nee, die beste Variante ist immer noch

    unsigned char ucValue = ((bValue != false) != (false));
    

    😃 *scnr*


Anmelden zum Antworten