Frage
Ein Freund von mir fragt, ob er verwenden könnte:
result |= condition
Anstatt von:
result = result || condition
in Javascript für boolesche Operationen.
Mir ist klar, dass einer bitweise und der andere logisch ist. Wie würde sich dies jedoch auf boolesche Variablen auswirken?
Ich bin momentan nicht vor meinem Computer, frage mich aber auch, ob es so etwas wie einen geben könnte ||
= Betreiber.
Aktualisieren
Ich habe gerade gemerkt, dass a boolean
Wert ist wesentlich a 1 bit value
. Bedeutet das, dass für booleans
das logical or
hat das gleiche wie das bitewise or
?
Damit a|=b
wäre gleichbedeutend mit a=a|b
?
Antworten:
1 für die Antwort № 1Bedeutet dies, dass für Boolesche das Logische oder dasselbe wie das Bitweise hat oder?
In deinem Fall etwas.
Bei der Verwendung logischer Ausdrücke können Operanden entweder wahr oder falsch sein. Ein OR-Ausdruck gibt hier den ersten zurück, der wahr ist (nicht unbedingt den Booleschen Wert) true
) oder, falls nicht, der letzte Operand.
result || condition
Kehrt zurück result
ob result
ist sonst wahr condition
Bei Verwendung bitweiser Ausdrücke sind Operanden32-Bit-Ganzzahlen mit Vorzeichen. Wenn Sie dies auf ein Bit beschränken, ähnelt dies dem Verhalten logischer Ausdrücke: Wenn ein Bit gesetzt ist, gibt ein OR-Ausdruck 1 zurück.
result | condition
Gibt eine vorzeichenbehaftete 32-Bit-Ganzzahl mit dem Wert 0 oder 1 für Operanden zurück, die in eine 32-Bit-Ganzzahl konvertiert werden können, wobei nur das niedrigstwertige Bit verwendet wird.
Wenn Sie jedoch bitweise Ausdrücke verwenden, wird aktiviertOperanden, die keine 32-Bit-Ganzzahlen sind, müssen implizite Konvertierungen in 32-Bit-Ganzzahlen durchgeführt werden, und es können zusätzliche Flankenfälle auftreten. Ich würde nicht empfehlen, bitweise Ausdrücke für logische Operanden zu verwenden.