Réponses:
L'esperluette unique & est l'opérateur logique AND. La double esperluette && est à nouveau un opérateur ET logique qui utilise un comportement de court-circuit. Un court-circuit 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)
d != 0 && 1/dvs d !=0 & 1/d- le premier ne garantit aucune division par zéro, le second ne le fait pas.
&fait un court-circuit si dans une ifdé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.
&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.Les deux sont des opérations ET logiques. Le && cependant, est un opérateur de "court-circuit". À partir de la documentation MATLAB:
Ce sont des opérateurs de court-circuit en ce 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.
En savoir plus ici .
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..
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.
bitandest 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 ifou 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 && / || 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.
r((r<2)&(r<2))".
&peut fonctionner sur des tableaux mais&&ne peut fonctionner que sur des scalaires.