Auteur Sujet: Devinette  (Lu 65 fois)

Pierre59

  • Full Member
  • ***
  • Messages: 166
    • Voir le profil
Devinette
« le: mai 31, 2020, 04:13:31 pm »

Bonjour

Il existe en C/C++ quatre opérateurs booléens :  !    &    |    ^   pour les opérations booléennes   non   et   ou   ou-exclusif   .

Par exemple  :    boolean a,b,c;    c=!a;   c=a&b;    c=a|b;    c=a^b;   

Trois de ces opérateurs peuvent êtres aussi utilisés sur des entiers, ils effectuent dans ce cas des   et   ou   ou-exclusif   bit à bit.

Par exemple :   int a,b,c;   c=a&b;    c=a|b;    c=a^b; 

Il existe aussi deux autres opérateurs booléens qui effectuent une optimisation   &&   ||   pour les opérations booléennes   et   ou    .

Pour ces deux opérateurs si on peux déterminer le résultat avec seulement le premier opérande, le deuxième n'est pas pris en compte. Pour le    et    si le premier opérande est faux le résultat est faux, pour le   ou   si le premier opérande est vrai le résultat est vrai.

Mais attention, les deux opérateurs ne sont pas équivalents dans certains cas, cela se produit quand le deuxième opérateur fait ce que l'on appelle "des effets de bord", cet effet de bord sera toujours fait avec l'opérateur normal, mais pas systématiquement avec l'opérateur optimisé.

Il existe aussi des opérateurs booléens combinés avec l'affectation  (comme pour beaucoup d'opérateurs) :       .

Par exemple :    boolean a,b;   a&=b;   a|=b;

Devinette, il existe des opérateurs optimisés pour le   et   et le   ou  , pourquoi il n'y en n'a pas pour le ou-exclusif ?

Pierre