Quelle est la différence entre le &
et &&
opérateurs logiques dans MATLAB?
L'esperluette unique & est l'opérateur logique AND. Le double esperluette && est à nouveau un opérateur AND logique qui utilise un comportement de court-circuit. Court-circuiter signifie simplement que le deuxième opérande (côté droit) est évalué uniquement lorsque le résultat n'est pas entièrement déterminé par le premier opérande (côté gauche)
A & B (A et B sont évalués)
A && B (B n'est évalué que si A est vrai)
&&
et ||
toujours prendre des entrées scalaires et des courts-circuits. |
et &
prend les entrées de la matrice et court-circuite uniquement dans les instructions if/while. Pour l'affectation, ces derniers ne court-circuitent pas.
Voir ces pages de documentation pour plus d'informations.
Comme déjà mentionné par d'autres, &
est un opérateur AND logique et &&
est un court-circuit ET opérateur . Ils diffèrent par la façon 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) peut utiliser des tableaux de manière élémentaire.&&
et ||
sont des versions de court-circuit pour lesquelles le deuxième opérande est évalué uniquement 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 des tableaux.Les deux sont des opérations AND logiques. Le && cependant, est un "court-circuit" opérateur. À partir de la documentation MATLAB:
Ce sont des opérateurs de court-circuit en ce sens qu’ils évaluent leur deuxième opérande uniquement lorsque le résultat n’est pas entièrement déterminé par le premier opérande.
Voir plus ici .
Semblable à d'autres langages, &
Est un opérateur de bits logique, tandis que &&
Est une opération logique.
Par exemple (pardonnez ma syntaxe).
Si..
A = [True True False True]
B = False
A & B = [False False False False]
..ou..
B = True
A & B = [True True False True]
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.
&& et || are court-circuit opérateurs opérant sur des scalaires. & et | opère sur les tableaux, et court-circuitez seulement dans le contexte des expressions de boucle if
ou while
.
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 &&/|| formes, à moins qu'il y ait une très bonne raison de ne pas. Il y a deux raisons ...
Ce faisant, plutôt que de compter sur la résolution des vecteurs de MATLAB dans & and |, le code est un peu plus détaillé, mais BEAUCOUP plus sûr et facile à gérer.