Combiner des conditions : &&, || et !
Exprimer « et », « ou » et « non » pour écrire des conditions plus riches.
Ce que tu vas apprendre
- Combiner des conditions avec
&&et|| - Inverser une condition avec
! - Tester qu'une valeur est comprise entre deux bornes
Et, ou, non
a && b(et) : vrai siaetbsont vraiesa || b(ou) : vrai si au moins l'une des deux est vraie!a(non) : vrai siaest fausse
&& est prioritaire sur ||. Dès qu'il y a un mélange, ajoute des parenthèses : le code est plus clair et sans surprise.
Entre deux bornes
Pour tester que x est entre a et b, on écrit a <= x && x <= b. L'écriture mathématique a <= x <= b compile, mais ne fait pas ce que l'on croit.
Évaluation paresseuse
Le C s'arrête dès que le résultat est connu : dans a && b, si a est fausse, b n'est même pas évaluée. Cela permet d'écrire d != 0 && n % d == 0 sans risquer une division par zéro.
Exemples commentés
1.Horaires d'ouverture
#include <stdio.h>
int main(void) {
int h;
scanf("%d", &h);
// ouvert de 9 h à 12 h et de 14 h à 18 h
if ((h >= 9 && h < 12) || (h >= 14 && h < 18)) {
printf("ouvert\n");
} else {
printf("ferme\n");
}
return 0;
}Entrée
15
Sortie
ouvert
Deux intervalles reliés par ||, chacun écrit avec && et entouré de parenthèses.
2.Code à quatre chiffres
#include <stdio.h>
int main(void) {
int code;
scanf("%d", &code);
if (!(code >= 1000 && code <= 9999)) { // ! inverse la condition
printf("invalide\n");
} else {
printf("valide\n");
}
return 0;
}Entrée
123
Sortie
invalide
!( ... ) est vrai quand le code n'est pas entre 1000 et 9999. On aurait pu écrire code < 1000 || code > 9999.
Chaque exemple est compilé et exécuté automatiquement pour garantir la sortie affichée.
Erreurs fréquentes
Écrire a <= x <= b
À éviter
if (1 <= x <= 10)
À préférer
if (1 <= x && x <= 10)
1 <= x vaut 0 ou 1, et ce résultat est ensuite comparé à 10 : la condition est presque toujours vraie.
Confondre & et &&
À éviter
if (a > 0 & b > 0)
À préférer
if (a > 0 && b > 0)
& est un opérateur sur les bits. Pour un « et » logique, il faut && (et || pour le « ou »).
Entraîne-toi
6 questions variées pour fixer la leçon : choix, résultat à prévoir, ligne à compléter, code à remettre dans l'ordre, erreur à trouver.
À toi de jouer !
2 exercices pour mettre cette leçon en pratique, du plus simple au plus avancé.