Question de loisirs / curiosité comme implicite dans le titre. P>
Je préfère personnellement les nouveaux opérateurs de rendre le code plus lisible à mon avis. p>
Lesquels utilisent-ils vous-même? Quelle est votre raison de choisir un sur l'autre? P>
aussi Emacs met en évidence les opérateurs différemment, donc je reçois plus de commentaires visuels lorsque vous regardez l'écran. Je sais que les anciens opérateurs peuvent être mis en évidence aussi bien que l'ISO646 en surbrillance par défaut P>
6 Réponses :
J'utilise les anciens. P>
Raison: j'ai codé à Perl pendant un moment et que les opérateurs ont une priorité différente selon leur variante orthographiée ou non. J'ai couru dans quelques insectes à cause de cela et depuis lors, j'utilise toujours && code>,
|| code> et
! Code> sur la variante épelée pour tout langue qui les a. p>
PHP a ces problèmes aussi. Remplacement de ($ A ou $ B) code> avec
($ A || $ b) code> corrigé un bogue, à quel point je me suis marre de la langue entièrement.
Parlez-vous des jetons alternatifs provenant de iso646.h code >
? p>
Ils viennent de C et il est très rare de voir, donc probablement être moins lisible par la plupart. Je suis sûr que si nous avions été "élevés" avec ces mots-clés, ils seraient plus courants, car ils ont lu comme l'anglais mieux. P>
Encore une fois, && code> permet aux locuteurs non anglais "et" dans leur langue maternelle. (Pas que c'était une préoccupation dans les mots-clés de la première place.) P>
Mais ciso646.h contient ... rien ??
Quoi? Pour moi, Visual Studio 2008, il fait l'attente #include
et code>,
et_eq code>, etc. Comme macros, mais
et code>,
and_eq code>, car ils sont des mots-clés in c ++, rendant ainsi
Hein, je suis d'accord alors. Je ne savais pas qu'ils étaient des mots clés réels, pourquoi ce titre existerait-il? : o
Désolé, ce ne sont pas des mots-clés (Thinko!), Ce sont des jetons alternatifs.
L'en-tête existe parce qu'ils ne sont pas des mots-clés dans c donc C ont iso646.h code> pour les obtenir, et C ++ prend en charge tous les en-têtes C (à partir de l'amendement de 1995 à la norme C, qui est où
iso646.h code> a ajouté). De plus, MME a décidé de ne pas mettre en œuvre les mots-clés de MSVC à moins que vous n'utilisez l'option ANSI stricte (/ ZA), afin de les obtenir dans MSVC C ++, vous devez souvent inclure l'en-tête:
@CHARLES - Je pense que les appeler des mots-clés conviennent parfaitement - ils sont énumérés dans la section "2.11 Mots-clés" de la norme C ++ et sont spécifiquement appelées "Mots-clés" dans l'annexe C (C.2.2.2 - Header
S'ils pèsent le même que celui d'un mot clé, et qu'ils comptent comme un mot clé ... mais ils ne sont pas réellement dans la table des mots-clés. Pratiquement, oui, ça compte peu.
Je préfère utiliser pas code> au lieu de
! code> car il est beaucoup plus lisible:
if (!condition()) {
}
Si (pas état ()) code> est une abomination blasphématoire de l'enfer.
Je ne suis pas d'accord avec la lisibilité. Mais c'est parce que je suis tellement habitué à la! opérateur. Pour former mon cerveau à lire pas comme un opérateur est un processus non trivial à mon âge.
J'aime utiliser pas code>,
et code>,
ou code>, encore plus puisque je travaille avec python. Emacs met en évidence par défaut, je trouve
pas code> en particulier plus lisible, et ils sont plus rapides de type IMO.
@Charasalvia Comment se fait-il? Pouvez-vous donner un peu plus de détails :)?
Je ne pense pas avoir même jamais vu em> stry> C / C ++ code source qui utilise réellement les opérateurs alphabétiques. Pour moi, ça a l'air étrange; très un-c-ish. p>
Je ne savais jamais qu'ils existaient jusqu'à maintenant.
Jetons alternatifs pour les opérateurs logiques (et non seulement logiques), tels que et code>,
ou code>,
non code> etc. n'ont rien à voir avec c ++ Plus précisément. Ils étaient aussi présents en C aussi, pratiquement dès le début. Si vous aimez les utiliser dans votre code, vous êtes libre de le faire, mais ne soyez pas surpris si les gens voient cette pratique plutôt peu orthodoxe. Normalement, les gens utilisent des désignateurs traditionnels pour ces opérateurs (par exemple
&& code>,
|| code> et ainsi de suite) dans le code C et C ++. P>
Non, et code>,
ou code>,
pas code>, etc. sont spécifiques i> à c ++. Ils sont mots-clés i> en C ++. Vous ne pouvez pas choisir de faire sans eux. Ce sont des macros standard en C, mais si vous n'incluez pas
Eh bien, je ne veux pas redémarrer le débat battu à la mort sur la question de savoir si des jetons alternatifs sont des mots-clés ou non. À mon avis, le libellé de la norme (C ++ 98 au moins) est assez clair: ce sont des mots-clés pas i>. Allez c'est vrai qu'ils ne sont pas des macros en C ++.
Désolé, vous avez raison, ce ne sont pas des mots-clés, ce sont des jetons alternatifs. De toute façon, ils sont spécifiques i> C ++ (comme s'opposent à C où ils sont définitivement des macros).
Attendez, alors qu'est-ce que ma réponse devrait dire? : P
@Gman: jetons alternatifs! Fondamentalement (par exemple) et code> est traduit vers
&& code> dans l'une des étapes de la traduction de C ++ (avant l'interprétation des directives de pré-processeur), alors au moment où votre programme est interprété, il y a Pas moyen de dire comment vous avez lancé à l'origine
&& code>.
Il est temps de supprimer les cheveux et continuez à battre cela à mort: les jetons alternatifs sont des mots-clés. Ils sont définis dans la section Mots-clés de la norme et sont spécifiquement appelés mots-clés à l'annexe C.
Je n'utiliserai pas les opérateurs alternatifs car ils provoquent plus de confusion, puis de l'autorisation à mon avis.
Si je vois un nom alphabétique, j'attends un espace de noms, une classe, une variable, une fonction ou un opérateur de style de fonction - les opérateurs communs divisent cette intuitivement en séquences pour moi. Le style alternatif ne rentre tout simplement pas dans le monde C / C ++ pour moi. P>
En outre, tandis que Greg a un point sur les personnes nouvelles à C ou C ++, vous vous y habituez plutôt bientôt - je n'ai aucun problème à repérer ! code> n'importe où. p>
Wow, j'avais déjà répondu à cette question précédente avec presque la même réponse! Marqué celui-ci comme une dupe.