Quelle est la différence entre les opérateurs logiques &
et &&
dans MATLAB?
matlab
logical-operators
short-circuiting
Fantomas
la source
la source
&
peut fonctionner sur des tableaux mais&&
ne peut fonctionner que sur des scalaires.d != 0 && 1/d
vsd !=0 & 1/d
- le premier ne garantit aucune division par zéro, le second ne le fait pas.&
fait un court-circuit si dans uneif
déclaration. Et&&
prend des entrées scalaires. La réponse de @ Loren ci - dessous est correcte.&&
et||
prendre des entrées scalaires et toujours court-circuiter.|
et&
prendre les entrées de tableau et court-circuiter uniquement dans les instructions if / while. Pour l'affectation, ces derniers ne court-circuitent pas.Consultez ces pages de documentation pour plus d'informations.
la source
&
et|
dans les instructions if / while? Cela ne semble pas être le cas dans R2012b et R2014a.Comme déjà mentionné par d'autres,
&
est un opérateur ET logique et&&
est un opérateur ET de court-circuit . Ils diffèrent par la manière dont les opérandes sont évalués et par le fait qu'ils fonctionnent ou non sur des tableaux ou des scalaires:&
(Opérateur AND) et|
(opérateur OR) peuvent opérer sur des tableaux de manière élémentaire.&&
et||
sont des versions en court-circuit pour lesquelles le deuxième opérande n'est évalué que lorsque le résultat n'est pas entièrement déterminé par le premier opérande. Ceux-ci ne peuvent fonctionner que sur des scalaires , pas sur des tableaux.la source
Les deux sont des opérations ET logiques. Le && cependant, est un opérateur de "court-circuit". À partir de la documentation MATLAB:
En savoir plus ici .
la source
Semblable à d'autres langages,
&
est un opérateur logique au niveau du bit, tandis que&&
c'est une opération logique.Par exemple (pardonnez ma syntaxe).
Si..
..ou..
Pour
&&
, l'opérande de droite n'est calculé que si l'opérande de gauche est vrai et le résultat est une valeur booléenne unique.x = (b ~= 0) && (a/b > 18.5)
J'espère que c'est clair.
la source
bitand
est l'opérateur AND logique au niveau du bit dans MATLAB.&& et || sont des opérateurs de court-circuit fonctionnant sur des scalaires. & et | fonctionnent sur des tableaux et n'utilisent le court-circuit que dans le contexte d' expressions de boucle
if
ouwhile
.la source
Une bonne règle de base lors de la construction d'arguments à utiliser dans des instructions conditionnelles (IF, WHILE, etc.) est de toujours utiliser le && / || formulaires, à moins qu'il y ait une très bonne raison de ne pas le faire. Il y a deux raisons ...
Faire cela, plutôt que de compter sur la résolution MATLAB des vecteurs dans & et |, conduit à un code un peu plus détaillé, mais BEAUCOUP plus sûr et plus facile à maintenir.
la source
r((r<2)&(r<2))
".