Antworten:
Das einzelne kaufmännische Und & ist der logische UND-Operator. Das doppelte kaufmännische Und && ist wieder ein logischer UND-Operator, der ein Kurzschlussverhalten verwendet. Kurzschluss bedeutet nur, dass der zweite Operand (rechte Seite) nur ausgewertet wird, wenn das Ergebnis vom ersten Operanden (linke Seite) nicht vollständig bestimmt wird.
A & B (A und B werden bewertet)
A && B (B wird nur ausgewertet, wenn A wahr ist)
d != 0 && 1/d
vs d !=0 & 1/d
- der erste garantiert keine Division durch Null, der zweite nicht.
&
macht einen Kurzschluss, wenn in einer if
Anweisung. Und &&
nimmt skalare Eingaben. @ Lorens Antwort unten ist richtig.
&&
und ||
nehmen Sie immer skalare Eingaben und Kurzschlüsse. |
und &
Array-Eingänge nehmen und nur in if / while-Anweisungen kurzschließen. Letztere schließen für die Zuordnung nicht kurz.
Weitere Informationen finden Sie auf diesen Dokumentseiten .
&
und |
in if / while-Anweisungen? Dies scheint in R2012b und R2014a nicht der Fall zu sein.
Wie bereits von anderen erwähnt, &
ist es ein logischer UND-Operator und &&
ein Kurzschluss-UND-Operator . Sie unterscheiden sich darin, wie die Operanden ausgewertet werden und ob sie mit Arrays oder Skalaren arbeiten oder nicht:
&
(AND-Operator) und |
(OR-Operator) können Arrays elementweise bearbeiten.&&
und ||
sind Kurzschlussversionen, für die der zweite Operand nur ausgewertet wird, wenn das Ergebnis vom ersten Operanden nicht vollständig bestimmt wird. Diese können nur mit Skalaren arbeiten , nicht mit Arrays.Beides sind logische UND-Operationen. Das && ist jedoch ein "Kurzschluss" -Operator. Aus den MATLAB-Dokumenten:
Sie sind Kurzschlussoperatoren, da sie ihren zweiten Operanden nur dann auswerten, wenn das Ergebnis vom ersten Operanden nicht vollständig bestimmt wird.
Sehen Sie hier mehr .
Ähnlich wie in anderen Sprachen &
handelt es sich um einen logischen bitweisen Operator, während &&
es sich um eine logische Operation handelt.
Zum Beispiel (verzeihen Sie meine Syntax).
Wenn..
A = [True True False True]
B = False
A & B = [False False False False]
..oder..
B = True
A & B = [True True False True]
Denn &&
der rechte Operand wird nur berechnet, wenn der linke Operand wahr ist und das Ergebnis ein einzelner boolescher Wert ist.
x = (b ~= 0) && (a/b > 18.5)
Hoffe das ist klar.
bitand
ist der bitweise logische AND-Operator in MATLAB.
&& und || sind Kurzschlussoperatoren, die mit Skalaren arbeiten. & und | arbeiten mit Arrays und verwenden Kurzschlüsse nur im Kontext von if
oder while
Schleifenausdrücken.
Eine gute Faustregel gilt : wenn Argumente für den Einsatz in bedingten Anweisungen (IF, WHILE, etc.) Konstruktion ist immer die && / || zu verwenden Formen, es sei denn, es gibt einen sehr guten Grund, dies nicht zu tun. Es gibt zwei Gründe ...
Dies zu tun, anstatt sich auf MATLABs Auflösung von Vektoren in & und | zu verlassen, führt zu Code, der etwas ausführlicher ist, aber viel sicherer und einfacher zu warten ist.
r((r<2)&(r<2))
" durchführen.
&
Kann auf Arrays arbeiten,&&
kann aber nur auf Skalaren arbeiten.