La première relation est fausse. En effet, si i
vaut 1 et j
2 par exemple, on a i&&j
égal à 1 puisque les deux arguments sont non nuls, alors que i&j
vaut 0 (pas de bit à 1 correspondant). Par contre la seconde relation est vraie. En effet, si les deux variables sont nulles, on a zéro dans les deux cas. Si i
est nul mais pas j
, on obtient dune part if (1)...
et dautre part if (j)...
et linstruction est exécutée dans les deux cas. Si les deux variables sont non nulles, i||j
vaut 1 et i|j
est non nul ce qui équivaut à la même valeur logique.
A méditer, pour éviter des écritures trop sophistiquées qui se révéleraient catastrophiques !