115 votes

Les versions écrites des opérateurs logiques

C' est le seul endroit que j'ai jamais vu and, or et not répertoriés comme de véritables opérateurs en C++. Quand j'ai écrit un programme de test dans NetBeans, j'ai eu le rouge en soulignant que s'il y a une erreur de syntaxe et pensé que le site était mal, mais il est NetBeans qui est faux, car il compilé et exécuté comme prévu.

Je peux voir ! être favorisée par rapport à d' not , mais la lisibilité de l' and && or semble supérieure à celle de leurs grammaticales frères. Pourquoi ces versions des opérateurs logiques existent et pourquoi n'a apparemment pas l'un l'utiliser? Est-ce vraiment valable en C++ ou une sorte de compatibilité avec le C qui a été inclus avec la langue?

136voto

GManNickG Points 155079

Elles trouvent leur origine dans C dans l'en-tête <iso646.h>. À l'époque, il y avait des claviers qui ne pouvait pas taper les symboles requis pour && (par exemple), de sorte que l'en-tête figurant #define's qui permettrait de le faire, par (dans notre exemple) définissant and être &&. Bien sûr, avec le temps c'est devenu de moins en moins utilisées.

En C++, il est devenu ce que l'on appelle suppléant jetons. Vous n'avez pas besoin d'inclure quoi que ce soit à l'utilisation de ces jetons et conforme aux normes compilateur (en tant que tel, le C++-identifiés version de l'en-tête C, <ciso646>, est vide). Alterner les jetons sont comme des jetons, sauf pour l'orthographe. Donc, lors de l'analyse des and est exactement le même que &&, c'est juste une façon différente de l'orthographe de la même chose.

Comme pour leur utilisation: parce qu'ils sont rarement utilisés, leur utilisation est souvent plus surprenant et déroutant que c'est utile. Je suis sûr que si c'était normal, ils seraient beaucoup plus faciles à lire, mais les gens sont tellement habitués à l' && et || de toute autre chose se distraire.

EDIT: j'ai vu une très légère augmentation de leur utilisation depuis que j'ai posté ceci, cependant. J'ai toujours les éviter.

24voto

mr3 Points 41

Ils existent pour la facilité d'utilisation (prise en charge des caractères au clavier/affichage des saveurs) et le général de lisibilité, mais il y a une autre raison qui est aujourd'hui de plus en plus prononcés. Presque aucune des réponses ici, ici, ou même la principale réponse ici préciser la raison de base de beaucoup d'entre nous préfèrent les versions de word sur le symbole de versions (et une des raisons principales autres langues utilisent): les bugs. Les différences entre les versions de word sont très visibles. Les différences entre le symbole versions sont nettement moins, au point de tenter de bugs pour une relativement beaucoup plus grande mesure: "x|y" est très bien de ne pas "x||y", mais lorsqu'il est incorporé dans une plus grande expression de beaucoup d'entre nous manquer la différence. Il est semblable à la commune de mélanges accidentels de la cession vs opérateur d'égalité. Pour cette raison, je l'ai sevré moi-même hors de la symbole de versions (ce n'était pas facile) en faveur des versions de word. Je préfère avoir quelqu'un faire une double-prise sur eux à cause de notre amour de vieilles choses que de tenter de bugs.

11voto

Chris Jester-Young Points 102876

En C ++, ce sont de vrais mots clés. En C, ce sont des macros définies dans <iso646.h> . Voir http://web.archive.org/web/20120123073126/http://www.dinkumware.com/manuals/?manual=compleat&page=iso646.html .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X