Was ist der Unterschied zwischen & amp; und & amp; & amp; in MATLAB?
Was ist der Unterschied zwischen den &
und &&
logische Operatoren in MATLAB?
InformationsquelleAutor der Frage Fantomas | 2009-09-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den einzelnen kaufmännisches und-Zeichen & ist der logische UND-operator. Die doppelte kaufmännisches und-Zeichen && ist wieder eine logische UND-operator mit short-circuiting Verhalten. Kurzschluss bedeutet einfach, dass der zweite operand (right hand side) wird nur ausgewertet, wenn das Ergebnis ist nicht vollständig bestimmt durch die ersten Operanden (linke Seite)
A & B (A und B werden ausgewertet)
A && B (B wird nur ausgewertet, wenn A wahr ist)
InformationsquelleAutor der Antwort Fraser
&&
und||
nehmen scalar Eingänge und Kurzschluss immer.|
und&
nehmen-array-Eingänge und Kurzschluss nur in if/while-Anweisungen. Für die Zuordnung, die letztere nicht kurzschließen.Sehen diese doc-Seiten für weitere Informationen.
InformationsquelleAutor der Antwort Loren
Wie schon von anderen erwähnt,
&
ist ein logische UND-operator und&&
ist ein Kurzschluss-UND Betreiber. Sie unterscheiden sich darin, wie die Operanden ausgewertet werden als auch, ob oder nicht Sie arbeiten auf arrays oder Skalare:&
(UND Betreiber) und|
(ODER-operator) kann auf arrays in einem element-wise-Mode.&&
und||
sind Kurzschluss-Versionen, für die der zweite operand wird nur ausgewertet, wenn das Ergebnis ist nicht vollständig bestimmt durch den ersten Operanden. Diese können nur auf Skalarenicht arrays.InformationsquelleAutor der Antwort gnovice
Beide sind logische UND-Operationen. Die && obwohl, ist ein "short-circuit" - operator. Aus der MATLAB-Dokumentation:
Mehr sehen hier.
InformationsquelleAutor der Antwort Mark
Ähnlich wie in anderen Sprachen, '&' ist eine logische bitweise operator, während '&&' ist ein logischer Vorgang.
Beispielsweise (pardon my-syntax).
Wenn A = [True True False True]
B = False
A & B = [False, False, False, False]
..oder wenn B = True
A & B = [True True False True]
Für '&&', der Rechte operand wird nur berechnet, wenn der linke operand true ist, und das Ergebnis ist ein einzelner boolescher Wert.
x = (b ~= 0) && (a/b > 18.5)
Hoffe, das ist klar.
InformationsquelleAutor der Antwort Erik Kerber
&& und || sind Kurzschluss Betreiber den Betrieb auf Skalare. & und | Bewertungen stets beide Operanden und arbeiten auf arrays.
InformationsquelleAutor der Antwort Dima
Ist eine gute Faustregel beim erstellen Argumente für die Verwendung in bedingten Anweisungen (IF, WHILE, etc.) ist immer verwenden Sie die &&/|| Formen, es sei denn, es gibt einen sehr guten Grund, nicht zu. Es gibt zwei Gründe...
Dies zu tun, anstatt auf MATLAB die Auflösung der Vektoren in & und |, führt zu code, der ein wenig Ausführlicher ist, aber VIEL sicherer und leichter zu pflegen.
InformationsquelleAutor der Antwort Bob Gilmore