In logischen Ausdrücken verwenden wir zwei "und (&)" Operanden was ist der Grund? Wie funktioniert es im Hintergrund des Programms? Ich meine, wie macht Maschine diesen Befehl?Warum codieren wir (a && b) und nicht (a & b)?
Antwort
&
ist ein bitweiser Operator und wertet immer beide Seiten aus.
&&
ist ein logischer Operator, also wertet er die linke Seite aus und wenn es true
ist, geht es weiter, um die rechte Seite zu bewerten. Aus diesem Grund wird es manchmal als Kurzschluss-Operation mit &&
bezeichnet.
Denken Sie daran, dass die genannten Operatoren in einer Vielzahl von Sprachen implementiert sind (C, C#, Java usw.) und Sie sollten die Dokumentation für die Sprache überprüfen, mit der Sie arbeiten.
Typischerweise werden zwei mit „und“ Operanden zwischen logischen und und bitweise und zu unterscheiden ist.
Was ist der Unterschied zwischen diesen Operationen?
"Logical und" (gewöhnlich dargestellt als & & oder "und" in den meisten Sprachen) vergleicht zwei boolean Werte. Die wichtige Sache hier ist, dass eine "logische und" führt Operationen auf Werte, die entweder wahr oder falsch sind. Die zugrunde liegende Implementierung, wie wahr und falsch in Bits ausgedrückt werden, spielt keine Rolle.
„bitweisen UND“ (repräsentiert durch einen einzigen „&“) führt eine ‚logische und‘ zwischen zwei Werten für jedes Bit in diesen Werten. Nehmen wir zum Beispiel zwei 8-Bit-Ganzzahlen ohne Vorzeichen: 5 und 9. Im Binärformat sieht 5 wie 00000101 aus. 9 sieht aus wie 00001001. Ein "bitweises" berechnet die Bits, die in beide-Nummern sind. Das Ergebnis einer bitweisen und zwischen 5 und 9 wäre 1, was binär 00000001 ist.
Googeln "bitweise Operationen" gibt Ihnen weitere Informationen dazu.
- 1. Warum behandelt Numpy a + = b und a = a + b anders?
- 2. GROUP BY (a, b) und (b, a)
- 3. Wie tauscht [b] [b = a, 0] zwischen a und b?
- 4. Unterschied zwischen a - = b und a = a - b in Python
- 5. Warum hat a = (b ++) das gleiche Verhalten wie a = b ++?
- 6. Ruby-Syntax Frage: Rational (a, b) und Rational.new (a, b)
- 7. Warum a [c] a [b] überschreiben?
- 8. Numpy: Differenz zwischen dot (a, b) und (a * b) .sum()
- 9. Haskell: a -> a -> ... -> b [a] -> b
- 10. PHP transformieren Array 'a', 'b', 'c' zu 'a/b/c', 'a/b', 'a'
- 11. Der einfachste Weg, um "a/b/c" in ["a/b/c", "a/b", "a"] zu konvertieren
- 12. Leistungsdifferenz zwischen einem + = b und a = a + b
- 13. Wie konvertiert man A [B [C]] in B [A [C]] wenn A und B Monaden sind?
- 14. Pythons nicht A oder A% B
- 15. Warum Typoskript Behauptung von Objektliteral `{a}` Arbeit mit Schnittstelle `{a, b}` aber nicht `{a ?, b}`
- 16. Ist Math.max (a, b) oder (a> b)? A: b schneller in Java?
- 17. Berechnung (a^b)% MOD
- 18. numexpr.evaluate ("a + b", out = a)
- 19. Assoziativität Mathe: (a + b) + c = a + (b + c)
- 20. A oder B = B oder A Beweis (natürlicher Abzug)
- 21. Unterschied zwischen a || a = b und a = a || b in Rubin?
- 22. Bereiche A bis B, wobei A> B in F #
- 23. Wie kann "a <= b && b <= a && a! = B" wahr sein?
- 24. Ganzzahlige Division: ist a // b == int (a/b) wahr für alle ganzen Zahlen a, b?
- 25. In Java sind a und b boolesch, würden a && b und b && a zum selben Ergebnis ausgewertet?
- 26. Was ist der Unterschied zwischen double a = a + int b und int a + = double b?
- 27. Wenn return a = return b dann tut a = b?
- 28. Oracle SQL eindeutige Einschränkung A nach B, B nach A
- 29. Matlab, Operator A \ B
- 30. Eindeutige Spaltenpaare wie A, B oder B, A
Die Wahl von '&&' vs '&' ist eine ** sprachspezifische Syntax Entscheidung ** und ist größtenteils für 'historische Gründe' an diesem Punkt, wo es sogar gilt. Ebenso sind die genauen Regeln (zB Kurzschließen oder nicht?) Und die Implementierung sprachen-/laufzeitspezifisch. – user2864740
Bitte folgen Sie dem Thread: http://stackoverflow.com/questions/4163483/what-is-the-diffrence-between-and-operators-in-c-sharp –