Je suis un peu confus par la documentation MSDN C # qui stipule que &
et |
sont des opérateurs logiques et qui &&
et ||
sont des opérateurs conditionnels.
Je continuer à appeler &&
, ||
et les !
opérateurs logiques, donc je me trompe?
c#
operators
logical-operator
John V
la source
la source
|
est interchangeable avec||
, même si dans de nombreux cas, ils peuvent être interchangés sans changement apparent du comportement du programme.Réponses:
Non; vous avez raison.
La documentation MSDN contient de nombreuses erreurs de nomenclature mineures, pour la plupart peu importantes. J'ai essayé d'en faire sortir le plus grand nombre possible, mais dans les cas où ce n'est pas manifestement faux et trompeur, ce n'est pas toujours une utilisation judicieuse du temps. Accédez à la spécification si vous souhaitez une déclaration définitive sur le nom d'une fonctionnalité C #.
Donc: l'autorité compétente est la spécification C #, qui stipule dans la section 7.11:
Il poursuit ensuite en décomposant davantage les opérateurs logiques intégrés en opérateurs logiques entier, énumération, booléen et nullable-booléen. Il existe également des opérateurs logiques définis par l'utilisateur. voir les spécifications pour plus de détails.
Dans la section 7.12, nous avons
Tous sont donc des opérateurs logiques . Certains d'entre eux sont des opérateurs logiques conditionnels .
Qu'est-ce qui rend les opérateurs logiques conditionnels conditionnels ? On pourrait faire une hypothèse spécieuse: c'est parce qu'elles sont généralement utilisées dans des instructions conditionnelles (
if
) ou des expressions conditionnelles (? :
). La vraie raison est donnée par le cahier des charges:Les opérateurs logiques conditionnels sont ainsi nommés car l'opérande de droite est évalué de manière conditionnelle en fonction de la valeur de l'opérande de gauche.
Nous pouvons le voir plus clairement en notant que les opérateurs logiques conditionnels ne sont que des "sucres syntaxiques" pour des expressions conditionnelles .
x && y
est tout simplement un moyen plus agréable d’écrirex ? y : false
etx || y
un moyen plus agréable d’écrirex ? true : y
. Les expressions logiques conditionnelles sont en réalité des expressions conditionnelles.Il existe également une forme définie par l'utilisateur de l'opérateur logique conditionnel, et elle est un peu délicate. Voir la spécification pour plus de détails.
Lectures complémentaires, si ce sujet vous intéresse:
la source
En C #, ce sont tous des opérateurs logiques.
&&
et||
sont appelés " opérateurs logiques conditionnels " parce qu'ils court-circuitent.Notez que cette terminologie diffère d'une langue à l'autre. En C et C ++
&&
et ne||
sont que des opérateurs logiques. En Java,&
et|
sont appelés Opérateurs de bits , tandis que C et C ++ les classe comme Opérateurs arithmétiques .la source
Le fait est que
&
et|
sont des opérateurs au niveau du bit , ce qui signifie qu’ils sont appliqués à des valeurs de chaîne de bits. Et bitwise est un terme très utilisé par les programmeurs.Par exemple
0xff & 0x00 == 0x00
, alors que0xff | 0x00 == 0xff
.Et
&&
et||
sont appliqués aux conditions et donnent les valeurs habituelles des conditions; c'est à diretrue
etfalse
.Par exemple
true && false == false
, alors quetrue || false == true
.Par conséquent
&&
, ils||
pourraient être appelés opérateurs conditionnels , même si ce n’est pas un terme courant chez les programmeurs.Bien entendu, tous les programmeurs C, C ++, Java et C # savent tout cela. Mais je suppose que l'incompréhension survient parce que "opérateur conditionnel" n'est pas un terme fréquemment utilisé par nos programmeurs.
la source