Respostas:
O único e comercial & é o operador AND lógico. O "e" comercial duplo && é novamente um operador AND lógico que emprega comportamento de curto-circuito. Curto-circuito significa apenas que o segundo operando (lado direito) é avaliado apenas quando o resultado não é totalmente determinado pelo primeiro operando (lado esquerdo)
A e B (A e B são avaliados)
A && B (B só é avaliado se A for verdadeiro)
d != 0 && 1/dvs d !=0 & 1/d- o primeiro garante nenhuma divisão por zero, o segundo não.
&faz curto-circuito se em uma ifdeclaração. E &&recebe entradas escalares. A resposta de @Loren abaixo está correta.
&&e ||tomar entradas escalares e sempre em curto-circuito. |e &pegar entradas de array e causar curto-circuito apenas em instruções if / while. Para atribuição, este último não causa curto-circuito.
Veja essas páginas de documentos para mais informações.
&e |em declarações if / while? Não parece ser o caso em R2012b e R2014a.
Como já foi mencionado por outros, &é um operador AND lógico e &&um operador AND de curto-circuito . Eles diferem em como os operandos são avaliados , bem como se operam ou não em matrizes ou escalares:
&(Operador AND) e |(operador OR) podem operar em matrizes de maneira elementar.&&e ||são versões de curto-circuito para as quais o segundo operando é avaliado apenas quando o resultado não é totalmente determinado pelo primeiro operando. Eles só podem operar em escalares , não em matrizes.Semelhante a outras linguagens, &é um operador lógico bit a bit, enquanto &&é uma operação lógica.
Por exemplo (perdoe minha sintaxe).
E se..
A = [True True False True]
B = False
A & B = [False False False False]
..ou..
B = True
A & B = [True True False True]
Para &&, o operando direito só é calculado se o operando esquerdo for verdadeiro e o resultado for um único valor booleano.
x = (b ~= 0) && (a/b > 18.5)
Espero que esteja claro.
bitandé o operador AND lógico bit a bit no MATLAB.
&& e || são operadores de curto-circuito operando em escalares. & e | operar em matrizes e usar curto-circuito apenas no contexto de expressões de loop ifou while.
Uma boa regra ao construir argumentos para uso em declarações condicionais (IF, WHILE, etc.) é sempre usar o && / || formulários, a menos que haja uma boa razão para não o fazer. Existem duas razões ...
Fazer isso, em vez de depender da resolução de vetores do MATLAB em & e |, leva a um código um pouco mais detalhado, mas MUITO mais seguro e fácil de manter.
r((r<2)&(r<2))".
&pode operar em matrizes, mas&&só pode operar em escalares.