Was ist der Unterschied zwischen den &
und &&
logischen Operatoren in MATLAB?
96
Was ist der Unterschied zwischen den &
und &&
logischen Operatoren in MATLAB?
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)
&
Kann auf Arrays arbeiten,&&
kann aber nur auf Skalaren arbeiten.d != 0 && 1/d
vsd !=0 & 1/d
- der erste garantiert keine Division durch Null, der zweite nicht.&
macht einen Kurzschluss, wenn in einerif
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 .
quelle
&
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.quelle
Beides sind logische UND-Operationen. Das && ist jedoch ein "Kurzschluss" -Operator. Aus den MATLAB-Dokumenten:
Sehen Sie hier mehr .
quelle
Ä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..
..oder..
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.
quelle
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
oderwhile
Schleifenausdrücken.quelle
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.
quelle
r((r<2)&(r<2))
" durchführen.