Qual é a diferença entre os operadores lógicos &
e &&
no MATLAB?
matlab
logical-operators
short-circuiting
Fantomas
fonte
fonte
&
pode operar em matrizes, mas&&
só pode operar em escalares.d != 0 && 1/d
vsd !=0 & 1/d
- o primeiro garante nenhuma divisão por zero, o segundo não.&
faz curto-circuito se em umaif
declaraçã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.
fonte
&
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.fonte
Ambos são operações lógicas AND. O &&, entretanto, é um operador de "curto-circuito". Dos documentos do MATLAB:
Veja mais aqui .
fonte
Semelhante a outras linguagens,
&
é um operador lógico bit a bit, enquanto&&
é uma operação lógica.Por exemplo (perdoe minha sintaxe).
E se..
..ou..
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.
fonte
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
if
ouwhile
.fonte
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.
fonte
r((r<2)&(r<2))
".