C # bitweise gleich booler Operator

8

Boolesch in C # sind 1 Byte Variablen. Und weil bool Abkürzungen für die Boolesche Klasse sind, würde ich erwarten, dass die & amp; = , | = -Operationen außer Kraft gesetzt wurden, damit sie mit den booleschen Typen arbeiten können. Ich bin mir nicht so sicher. Es gibt nichts wie & amp; & amp;; oder || = , das verwendet werden kann.

Hier ist meine Frage, etwas zu tun wie:

%Vor%

funktioniert, aber nur weil bool 00000000 für false und 00000001 für true oder ist weil unterhalb der Bool-Klasse etwas wie & amp; & amp;; und || = verwendet wird, wenn die vorherigen aufgerufen werden? Ist es tatsächlich sicher, die vorherigen Notationen zu verwenden oder ist es besser,

zu verwenden? %Vor%

um seltsames Verhalten zu vermeiden?

Bitte beachten Sie, dass die Bedingungen etwas wie A oder eine andere mögliche Überprüfung sein können, die ein bool zurückgibt.

    
Apache81 31.07.2015, 09:11
quelle

2 Antworten

3

Soweit ich in diesem SO-Post lesen kann, ist der einzige wirkliche Unterschied zwischen bitweisen Operatoren und logischen Operatoren auf booleschen Werten ist, dass Letzterer den rechten Seitenoperanden nicht auswertet, wenn der linke Operand false ist.

Das bedeutet, dass wenn Sie zwei Boolesche Werte haben, wird es keinen großen Unterschied geben. Wenn Sie zwei Methoden haben, wird die letzte nicht mit logischen Operatoren ausgeführt, sondern mit binären Operatoren.

    
Patrick Hofman 31.07.2015, 09:15
quelle
3

Per die Dokumentation (Hervorhebung von mir):

  

Ein Ausdruck, der den & amp; = Zuweisungsoperator verwendet, z. B.

     

x &= y

     

entspricht

     

x = x & y

     

mit der Ausnahme, dass x nur einmal ausgewertet wird. Der & amp; Operator führt eine bitweise logische UND-Operation für ganzzahlige Operanden und logische AND für bool-Operanden aus.

Und ähnlich für |= .

    
Charles Mager 31.07.2015 09:15
quelle