Respuestas:
El & es el operador lógico AND. El doble ampersand && es de nuevo un operador lógico AND que emplea un comportamiento de cortocircuito. El cortocircuito solo significa que el segundo operando (lado derecho) se evalúa solo cuando el resultado no está completamente determinado por el primer operando (lado izquierdo)
A y B (se evalúan A y B)
A && B (B solo se evalúa si A es verdadera)
d != 0 && 1/d
vs d !=0 & 1/d
- el primero no garantiza la división por cero, el segundo no.
&
hace cortocircuito si en una if
declaración. Y &&
toma entradas escalares. La respuesta de @ Loren a continuación es correcta.
&&
y ||
tomar entradas escalares y cortocircuito siempre. |
y &
tomar entradas de matriz y cortocircuito solo en declaraciones if / while. Para la asignación, estos últimos no cortocircuitan.
Consulte estas páginas de documentos para obtener más información.
&
y |
en declaraciones if / while? No parece ser el caso en R2012b y R2014a.
Como ya han mencionado otros, &
es un operador AND lógico y &&
es un operador AND de cortocircuito . Se diferencian en cómo se evalúan los operandos y en si operan o no en matrices o escalares:
&
(Operador Y) y |
(Operador O) pueden operar en matrices de una manera por elementos.&&
y ||
son versiones de cortocircuito para las que el segundo operando se evalúa solo cuando el resultado no está completamente determinado por el primer operando. Estos solo pueden operar en escalares , no en matrices.Ambos son operaciones AND lógicas. Sin embargo, && es un operador de "cortocircuito". De los documentos de MATLAB:
Son operadores de cortocircuito en el sentido de que evalúan su segundo operando solo cuando el resultado no está completamente determinado por el primer operando.
Vea más aquí .
Similar a otros lenguajes, &
es un operador lógico bit a bit, mientras que &&
es una operación lógica.
Por ejemplo (perdón por mi sintaxis).
Si..
A = [True True False True]
B = False
A & B = [False False False False]
..o..
B = True
A & B = [True True False True]
Para &&
, el operando derecho solo se calcula si el operando izquierdo es verdadero y el resultado es un único valor booleano.
x = (b ~= 0) && (a/b > 18.5)
Espero que esté claro.
bitand
es el operador AND lógico bit a bit en MATLAB.
&& y || son cortocircuitos operadores de que operan sobre escalares. & y | operan en matrices y usan cortocircuitos solo en el contexto de expresiones de bucle if
o while
.
Una buena regla general al construir argumentos para usar en declaraciones condicionales (SI, MIENTRAS, etc.) es usar siempre && / || formularios, a menos que haya una muy buena razón para no hacerlo. Hay dos razones ...
Hacer esto, en lugar de depender de la resolución de vectores de MATLAB en & y |, conduce a un código que es un poco más detallado, pero MUCHO más seguro y fácil de mantener.
r((r<2)&(r<2))
".
&
puede operar en matrices pero&&
solo puede operar en escalares.