bool nach unsigned char casten?
-
das funktioniert nicht
Dann erkläre mal was du unter funktioniert nicht verstehst.
-
wahrscheinlich meint er das daten verloren gehen koennen
*duck*
-
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 == 1Falls dir das noch nicht klar war
bei mir gehen alle cast operatoren und es geht auch ohne casten!
Ich verwende VC71mfg 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*