-
Utilisation de && et ||
Bonjour à tous,
Bon je suis un peu perdu avec l'utilisation de ces 2 symboles ( && et || ).
En faite j'ai un exo où l'on me demande de trouver les solutions des calculs suivants :
a = 1, b = 1, c = 0, d = 0
a || b && c || d = ? Réponse : 1
(a || b) && c || d = ? Réponse : 0
a || ( b && c) || d = ? Réponse : 1
a || b && (c || d ) = ? Réponse : 1
J'ai les bonnes réponses mais je ne sais pas pourquoi ce sont ces réponses et pas d'autres. Quelqu'un pourrait-il m'expliquer svp ?
Je vous remercie d'avance!
-
C'est assez simple.
|| signifie "OU"
&& signifie "ET"
Tu peux assimiler le "OU" a + et le "ET" a x
Donc
a = 1, b = 1, c = 0, d = 0
a || b && c || d = ? Réponse : 1
1 + 1 x 0 + 0 = 1
(a || b) && c || d = ? Réponse : 0
(1+1) x 0 + 0 = 0
a || ( b && c) || d = ? Réponse : 1
1 + ( 1 x 0 ) + 0 = 1
a || b && (c || d ) = ? Réponse : 1
1 + 1 x ( 0 + 0 ) = 1
Bien évidement ce qui change les réponse ici sont l'emplacement des parenthèse.
-
Ces opérateurs servent habituellement à former des expressions logiques complexes. Par exemple (5 < 1) || (5 > 1). Cette expression vaut VRAI car la proposition 5 > 1 a la valeur VRAI. Mais en langage C, VRAI est représenté par 1 et FAUX par 0. Toutes les expressions logiques du C vallent donc 1 ou 0. Ansi, (5 < 1) vaut 0 et (5 > 1) vaut 1.
De ce fait, il a été décidé que des entiers peuvent aussi dans une expression logique en C. Dans ce cas, un entier qui vaut 0 sera associé à FAUX et toute autre valeur (-20, -5, 1, 2, 3, ...) à VRAI. Mais une expression logique vaut toujours 1 ou 0. Ainsi, (5 && 4) vaut 1 et non 20, et (5 || 4) vaut 1 également et non 9.
Enfin, comme tous les types arithmétiques (caractères, entiers, flottants, pointeurs) peuvent être convertis en entier, n'importe quel type arithmétique peut aussi figurer dans une expression logique. Dans ce cas, la même règle s'applique, 0 est associé à FAUX et toute valeure différente à VRAI.
-
Ah ok je vois. Ah ben merci pour la technique j'avais pas capté !