J'écris un petit analyseur, qui aura un opérateur OU et un opérateur ET. Quand vous voyez une série de RUP et d'OR, à quoi pensez-vous que ce sera plus contraignant? Étant donné l'expression a & b | c
, vous attendez-vous à ce que cela signifie (a&b)|c
ou a&(b|c)
? Pouvez-vous donner une raison de préférer l'un à l'autre?OU logique vs logique ET: qui devrait être plus contraignant?
Répondre
Faites ce que tout le monde fait; ET se lie plus étroitement que OR (voir par exemple C Operator Precedence Table). C'est la convention que tout le monde attend, alors adoptez le principle of least surprise.
Ce choix n'est pas arbitraire. Il découle du fait que ET et OU suivent une relation similaire à multiplier et ajouter, respectivement; voir par exemple http://en.wikipedia.org/wiki/Boolean_logic#Other_notations.
Notez également que les utilisateurs de votre langue devraient être fortement encouragés à utiliser des parenthèses pour rendre leurs intentions claires aux lecteurs de leur code. Mais c'est à eux de décider!
Si vous considérez cela comme des mathématiques discrètes, je dirais que PEMDAS vous amène à dire que l'AND est plus contraignant. Ce n'est pas toujours le cas.
Je vous recommande de recommander à vos utilisateurs d'utiliser des parenthèses en cas d'ambiguïté.
Habituellement & a une priorité sur | dans de nombreux scénarios. Mais vous pouvez restreindre les expressions à une forme de parenthèse complète.
AND et OR dans l'algèbre de Boole sont équivalentes à * et - en algèbre régulière, donc il est logique que et se fixe plus difficile que ou simple * se fixe plus dur que +:
A B A*B A&B A+B A|B
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 0 1 1
1 1 1 1 1(>0) 1
- 1. Logique de requête vs Logique de programme
- 2. logique regexp et ou
- 3. || (Ou) Opérateur logique en Java vs .Net
- 4. Application logique vs autorisation
- 5. MongoDB - Java - quel est le moyen le plus facile de combiner logique OU et logique ET?
- 6. Référentiel ou logique métier?
- 7. Quelle devrait être la manière pythonique d'implémenter la logique suivante?
- 8. chaîne Jquery et logique OU
- 9. Services API vs logique d'application?
- 10. Où devrait aller ma logique métier?
- 11. cache physique vs cache logique
- 12. logique &&
- 13. Comment la base de données country> state> city devrait être utilisée pour être logique?
- 14. Erreur logique ou non?
- 15. Ou suite logique
- 16. logique propostional et la logique des prédicats
- 17. auto logique et?
- 18. Javascript window.close() et window.stop() Logique ou technique?
- 19. Quel type de logique devrait être dans un contrôleur? (Modèle MVC et Repository)
- 20. logique OU entre un critère et critères
- 21. Gamme? Logique Ou? objectif C
- 22. logique conditionnelle en vue mvc vs htmlhelper vs action
- 23. MySQL: est ET conditionnel ou logique?
- 24. Logique propositionnelle
- 25. logique et l'état Inversion
- 26. Appliquer logique et
- 27. Compute hashCode pour OU logique
- 28. IE ou Firefox, lequel a une gestion CSS plus logique?
- 29. Message explicatif ou explication logique
- 30. IO physique et logique compte
J'utilise entre parenthèses et/ou espacement pour le rendre explicite. –