c# operator



Unterschied zwischen | und || oder & und && zum Vergleich (5)

& und | sind binäre Operatoren, während || und && sind boolean.

Der große Unterschied:
(1 & 2) ist 0, falsch
(1 && 2) ist wahr

https://ffff65535.com

Mögliches Duplizieren:
Eine klare Erklärung des Laien über den Unterschied zwischen | und || in c #?

Was ist der Unterschied zwischen dem Vergleich mit | und || oder & und && in C # und Javascript?

Beispiele:

if(test == test1 | test1 == test2) or if(test == test1 || test1 == test2)
if(test == test1 & test1 == test2) or if(test == test1 && test1 == test2)

& und | sind bitweise Operatoren, die mit ganzzahligen und booleschen Argumenten und && und || arbeiten können sind logische Operatoren, die nur mit booleschen Argumenten arbeiten können. Wenn in beiden Sprachen beide Argumente boolesch sind, besteht der Hauptunterschied darin, dass die logischen Operatoren eine Kurzschlussbewertung durchführen und das zweite Argument nicht auswerten, wenn das erste Argument ausreicht, um die Antwort zu bestimmen (z. B. im Fall von &&, wenn das erste Argument) Argument ist falsch, das zweite Argument ist irrelevant.


Das & und | sind normalerweise bitweise Operationen.

Wo wie && und || sind normalerweise logische Operationen.

Zu Vergleichszwecken ist es in Ordnung, vorausgesetzt, alles gibt entweder eine 1 oder eine 0 zurück. Andernfalls kann es zu Fehlalarmen kommen. Sie sollten dies jedoch vermeiden, um schwer lesbare Fehler zu vermeiden.


Die Instanz, in der Sie ein einzelnes Zeichen verwenden (dh | oder &), ist ein bitweiser Vergleich der Ergebnisse. Solange Ihre Sprache diese Ausdrücke als Binärwert auswertet, sollten dieselben Ergebnisse zurückgegeben werden. Als bewährte Methode sollten Sie jedoch den logischen Operator so verwenden, wie Sie ihn meinen (denke ich).


in C (und anderen Sprachen wahrscheinlich) ein einzelnes | oder & ist ein bitweiser Vergleich.
Das Doppel || oder && ist ein logischer Vergleich.
Edit: Lesen Sie den Kommentar von Mehrdad, der sich auf "ohne Kurzschluss" bezieht.

In der Praxis können die bitweisen Vergleiche manchmal gültig sein und genau das gleiche Ergebnis zurückgeben , da true oft gleich 1 und false gleich 0 ist.

Es gab einmal eine unternehmenskritische Softwarekomponente, auf der ich einen statischen Code-Analysator ausgeführt habe, und es wurde darauf hingewiesen, dass ein bitweiser Vergleich verwendet wurde, bei dem ein logischer Vergleich hätte erfolgen sollen. Da es in C geschrieben wurde und aufgrund der Anordnung logischer Vergleiche funktionierte, funktionierte die Software gut mit beiden. Beispiel:

if ( (altitide > 10000) & (knots > 100) )
...




operators