136
Discussions ouvertes / Re : Devinette
« le: juin 06, 2020, 05:15:29 pm »
Les opérateurs « optimisés » reposent sur le fait que FAUX est élément absorbant pour le ET et VRAI est élément absorbant pour le OU. Si le premier terme est élément absorbant pour l’opération, il n’est pas nécessaire d’évaluer le second.
Il n’y a pas d’opérateur « optimisé » pour le XOR car ni VRAI ni FAUX ne sont élément absorbant pour le XOR. Il est donc toujours nécessaire d’évaluer le second terme.
Ceci dit. && n’est pas équivalent a & (et || n’est pas équivalent à |) car le premier est un opérateur logique et le second un opérateur bit à bit, ils ne donnent pas le même résultat. Les opérateurs bit à bit, &, | et ^ ne sont pas des opérateurs logiques sauf à considérer que chaque bit des opérandes est un booléen. Ils ne rentrent donc pas dans la même catégorie que le !, le && et le ||.
PS : boolean est abnadonné, voir https://www.arduino.cc/reference/en/language/variables/data-types/boolean/
Il n’y a pas d’opérateur « optimisé » pour le XOR car ni VRAI ni FAUX ne sont élément absorbant pour le XOR. Il est donc toujours nécessaire d’évaluer le second terme.
Ceci dit. && n’est pas équivalent a & (et || n’est pas équivalent à |) car le premier est un opérateur logique et le second un opérateur bit à bit, ils ne donnent pas le même résultat. Les opérateurs bit à bit, &, | et ^ ne sont pas des opérateurs logiques sauf à considérer que chaque bit des opérandes est un booléen. Ils ne rentrent donc pas dans la même catégorie que le !, le && et le ||.
PS : boolean est abnadonné, voir https://www.arduino.cc/reference/en/language/variables/data-types/boolean/