Question

À l'heure actuelle, je suis en utilisant && et || au lieu de AND et OR parce que c'est la façon dont on m'a enseigné. Dans la plupart des langues, cependant, les deux sont une syntaxe valide. Y a-t-il des avantages à l'une ou l'autre dans toutes les langues?

J'ai essayé de rechercher cette question, mais il est un peu difficile. Il n'interprète pas mon entrée correctement.

Était-ce utile?

La solution

Vous demandez « Y a-t-il des avantages à l'un ou l'autre dans toutes les langues? » Ceci est, bien sûr, en fonction du langage de programmation.

Langues qui mettent en œuvre à la fois and et && (et en conséquence or et ||) vont le faire de deux façons:

  • Les deux se comportent exactement de la même façon. Dans ce cas, il n'y a aucun avantage fourni par la langue en utilisant l'un sur l'autre.

  • Chaque comporte différemment. Dans ce cas, l'avantage est que vous pouvez obtenir un comportement différent en utilisant l'un ou l'autre.

Que tous les sons un peu facétieuse, mais il est vraiment aussi précis que l'on peut obtenir sans parler d'une langue spécifique. Votre question veut explicitement savoir sur tous langues, mais il est une question qui doit être répondu par langue.

Autres conseils

Perl a tous les quatre {&& || et ou}, mais ils se distinguent par leur priorité. « Et » et « ou » ont priorité très bas afin que vous puissiez faire des choses comme « fonction-call-ici complexe ou mourir $! » et vous n'aurez pas accidentellement « ou » gober quelque chose sur son côté gauche que vous ne voulez pas à.

il dépend de la langue, mais sur PHP, je serais prudent sur l'utilisation && par rapport « et ». Ceux que j'utilise souvent sont « && » et « || »

http://us3.php.net/manual/en /language.operators.logical.php

$g = true && false; // $g will be assigned to (true && false) which is false
$h = true and false; // $h will be assigned to true

Dans certaines langues && auront une priorité de l'opérateur supérieur à AND.

Si les deux fonctionne très bien, je dirais que c'est vraiment préférence personnelle, dans la plupart des cas, ils sont compilés en même code binaire comme ceci:. 11100010001000101001001010 [code pas réel, juste un exemple]

= && deux frappes de la même clé. ET = trois frappes de touches différentes.

Je ne suis pas sûr de ce que la langue que vous utilisez, mais certaines langues distinguons un opérateur booléen normal et un opérateur de court-circuit. Par exemple, les éléments suivants sont des opérateurs booléens normaux dans Matlab:

C = or(A,B);
C = A | B;  % Exactly the same as above

Cependant, il est un opérateur de court-circuit:

C = A || B;

La syntaxe de court-circuit évaluera le premier argument, puis, en fonction de la valeur, va potentiellement ignorer l'évaluation du second argument. Par exemple, si est déjà vrai, B ne doit pas être évalué pour une opération OU, puisque le résultat est garanti pour être vrai. Ceci est utile lorsque B est remplacée par une opération logique qui implique une sorte de calcul coûteux.

Voici un wikipedia lien discuter les opérateurs de court-circuit et leur syntaxe pour quelques langues.

À moins qu'il n'y a pas de problèmes de priorité, je dirais qu'il ya des différences dans la lisibilité. Considérez ce qui suit:

if (&x == &y && &y == &z) {
    // ..
}

#define AND &&
if (&x == &y AND &y == &z) {
    // ..
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top