operatoren |= und &= auf bool

23/07/2015 - 15:39 von Heinz Saathoff | Report spam
Moin,

anscheinend kann ich die bit-opertoren |= und &= auch bei bool
anwenden (der compiler übsersetzt es), also so

bool a=false, b=true;

a |= b;
a &= b;
statt
a = a || b;
a = a && b;

Kann man das gefahrlos als Ersatz für die nicht existierenden
operatoren ||= und &&= nutzen?
Als Vorbedingung ist sichergestellt, dass die Operanden tatsàchlich
bool sind und NICHT irgendwelche sonstigen numerischen Datentypen.
 

Lesen sie die antworten

#1 Stefan Reuther
23/07/2015 - 18:26 | Warnen spam
Heinz Saathoff wrote:
bool a=false, b=true;

a |= b;
a &= b;
statt
a = a || b;
a = a && b;

Kann man das gefahrlos als Ersatz für die nicht existierenden
operatoren ||= und &&= nutzen?



Kommt auf deine Erwartungshaltung an, was du von einem Ersatz für ||und &&= erwartest. Ich würde von einem 'a &&= b' ja erwarten, dass 'b'
nicht ausgewertet wird, falls 'a' schon false ist, so wie das ja auch
bei 'a = a && b' der Fall ist. 'a &= b' hingegen wertet 'b' immer aus.

Als Vorbedingung ist sichergestellt, dass die Operanden tatsàchlich
bool sind und NICHT irgendwelche sonstigen numerischen Datentypen.



Speziell unter dieser Vorbedingung kannst du das genau so machen und das
ist sicher und wohldefiniert.

(Konzeptuell rechnet der Compiler halt mit 'int', womit 'a = true, a &2' immer false ergibt, wohingegen 'a = true, a = a && 2' true ist.)


Stefan

Ähnliche fragen