Les opérateurs logiques ne traitent que des valeurs booléennes (true /false), ils servent à vérifier si une condition est remplie. Le résultat ne peut prendre que deux valeurs : true (vrai, condition valide), false (faux, condition invalide).
Tous les if, conditions des boucles while/for et conditions switch du code reposent intégralement sur des opérations logiques en arrière-plan.
Trois opérateurs principaux : ET, OU, NON
| Opérateur | Nom | Fonction |
|---|---|---|
&& | ET logique | Le résultat vaut true uniquement si les deux côtés valent true ; évaluation paresseuse |
| || | OU logique | Le résultat vaut true si au moins un des deux côtés est true ; évaluation paresseuse |
!expr | NON logique (négation) | Inverse une valeur booléenne : true devient false, false devient true |
Les opérateurs ET, OU et NON sont comparables aux circuits série et parallèle vus au collège. Le circuit série correspond à l’opérateur ET, le circuit parallèle à l’opérateur OU.
1. NON logique !
Inverse la valeur d’une expression booléenne unique.
Syntaxe :
!expression_booléenne
Exemple
void main() {
bool isMale = false;
print(!isMale); // true
bool flag = true;
print(!flag); // false
}Langage du code : PHP (php)
Ici, isMale et flag valent respectivement false et true au départ ; l’opérateur de négation inverse leurs valeurs.
On peut aussi l’appliquer à une expression complète, par exemple
void main() {
int age = 12;
print(!(age>18)); // true
}Langage du code : JavaScript (javascript)
L’expression age > 18 vaut initialement false, le ! devant inverse le résultat pour afficher true.
2. ET logique &&
| Expression | Résultat |
|---|---|
true && true | true |
true && false | false |
false && true | false |
false && false | false |
Le résultat est true uniquement si les deux opérandes valent true ; si l’une d’elles est false, le résultat est systématiquement false.
Caractéristique de l’évaluation paresseuse : si le côté gauche vaut false, le code du côté droit n’est pas exécuté et la fonction renvoie immédiatement false.

La lampe ne s’allume (true) que si les deux interrupteurs sont fermés (true). Si l’un d’eux est ouvert (false), la lampe reste éteinte (false). Dès que le côté gauche est false, il est inutile d’évaluer le côté droit.
void main() {
bool fun1() {
print("La fonction s'exécute !");
return true;
}
bool left = false;
// Le côté gauche est false : fun1() ne s'exécute pas
bool res = left && fun1();
print("Résultat final : $res");
}Langage du code : PHP (php)
Résultat d’exécution
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Résultat final : false
Langage du code : PHP (php)
Même si fun1 contient des erreurs ou exceptions, celles-ci ne se produiront pas car la fonction n’est jamais appelée.
Exemple d’utilisation de l’ET logique
void main() {
String name = 'admin';
String password = '123321';
// && : les deux côtés doivent être true pour valider la condition
if (name=='admin' && password =='456654') {
print("Connexion réussie");
} else {
print("Identifiant ou mot de passe incorrect");
}
}Langage du code : JavaScript (javascript)
Résultat d’exécution
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Identifiant ou mot de passe incorrectLangage du code : CSS (css)
3. OU logique ||
Si le côté gauche vaut true, le code du côté droit n’est pas exécuté et la fonction renvoie immédiatement true.
| Expression | Résultat |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
Voyons un exemple
void main() {
bool fun1() {
print("Exécution de la fonction");
return true;
}
// Côté gauche à true : évaluation paresseuse, fun1() ne tourne pas
bool res = true || fun1();
print(res); // true
}Langage du code : PHP (php)
Le côté gauche du || vaut true, donc fun1 du côté droit n’est pas exécutée.

Avec deux interrupteurs, si au moins l’un d’eux est fermé (true), la lampe s’allume (true).
void main() {
bool isParentAgree = true;
int age = 12;
if(age>=13 || isParentAgree){
print("Accès autorisé");
}
}Langage du code : JavaScript (javascript)
Synthèse
A && B : si A vaut false, renvoie directement false, B n’est pas évalué ni exécuté
A || B : si A vaut true, renvoie directement true, B n’est pas évalué ni exécuté
Cela améliore les performances et permet d’éviter les erreurs (très utilisé pour les vérifications de null)
Exemple :
String? name;
// On accède à length uniquement si name n'est pas null ; l'évaluation paresseuse évite une erreur de null
if(name != null && name.length > 0)
{
}Langage du code : JavaScript (javascript)
Si on appelait directement name.length, une erreur surviendrait car name vaut null et ne possède pas la propriété length. Grâce à la vérification name != null en premier, si name est null la première condition est false et le reste n’est pas exécuté : pas d’erreur.
Priorité des trois opérateurs logiques
! > && > ||
Comme pour les calculs mathématiques, les opérateurs à priorité élevée sont calculés en premier. Utilisez des parenthèses
()pour modifier l’ordre des opérations.
if (!done && (col == 0 || col == 3)) {
// ...Traiter une action...
}Langage du code : JavaScript (javascript)
Ordre de calcul détaillé :
- À l’intérieur des parenthèses : calcul de
col == 0 || col == 3(vérifie si la colonne est 0 ou 3) - Application du NON sur
!done - Combinaison des deux résultats avec l’opérateur
&&
Exemple
void main() {
bool done = false;
int col = 3;
// Exemple officiel
if (!done && (col == 0 || col == 3)) {
print("Exécution logique : non terminé et colonne 0 ou 3");
}
// Démonstration du NON logique !
bool isFinish = true;
print(!isFinish); // false
// Démonstration ET logique &&
int a = 10, b = 20;
if (a > 5 && b > 10) {
print("a supérieur à 5 ET b supérieur à 10");
}
// Démonstration OU logique ||
int score = 55;
if (score < 60 || score > 90) {
print("Note insuffisante OU excellente note");
}
// Démonstration évaluation paresseuse
bool func() {
print("La fonction s'exécute");
return true;
}
false && func(); // Côté gauche false, func ne s'affiche pas
true || func(); // Côté gauche true, func ne s'affiche pas
}Langage du code : PHP (php)
Résultat d’exécution
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Exécution logique : non terminé et colonne 0 ou 3
false
a supérieur à 5 ET b supérieur à 10
Note insuffisante OU excellente noteLangage du code : JavaScript (javascript)