Opérateurs et expressions en C#
Opérateurs et expressions en C# : utilisation des opérateurs arithmétiques, de comparaison, logiques, d’incrémentation/décrémentation, ternaire et null-coalescing.
En C#, les opérateurs sont des symboles spéciaux qui effectuent des opérations sur des variables ou des valeurs. Grâce à ces symboles, vous pouvez effectuer des calculs mathématiques, comparer deux valeurs, créer des conditions logiques ou affecter rapidement une valeur à une variable. Les structures formées par la combinaison d’opérateurs sont appelées expressions. Les expressions sont les éléments fondamentaux qui orientent le flux du programme et produisent des résultats.
Opérateur d’affectation (=)
Utilisé pour affecter une valeur à une variable.
int x = 5;
string message = "Bonjour";
x = 10;
Ici, la valeur 5 est affectée à la variable x de type int, et la valeur "Bonjour" est affectée à la variable message de type string. Ensuite, la variable x reçoit la valeur 10.
Opérateurs arithmétiques
En C#, les opérateurs arithmétiques sont utilisés pour effectuer des opérations numériques. Ces opérateurs permettent de réaliser les opérations de base : addition, soustraction, multiplication, division et modulo (reste).
| Opérateur | Description | Exemple (x=10, y=3) |
Résultat |
|---|---|---|---|
+ |
Addition | x + y |
13 |
- |
Soustraction | x - y |
7 |
* |
Multiplication | x * y |
30 |
/ |
Division | x / y |
3 |
% |
Modulo (reste) | x % y |
1 |
Exemple :
int a = 15;
int b = 4;
Console.WriteLine(a + b); // 19
Console.WriteLine(a / b); // 3
Console.WriteLine(a % b); // 3
Opérateurs de comparaison
En C#, les opérateurs de comparaison sont utilisés pour comparer deux valeurs. Le résultat est toujours de type bool.
bool est un type logique qui ne peut prendre que deux valeurs : true (vrai) ou false (faux).
| Opérateur | Description | Exemple (x=10, y=3) |
Résultat |
|---|---|---|---|
== |
Égal à | x == y |
false |
!= |
Différent de | x != y |
true |
> |
Supérieur à | x > y |
true |
< |
Inférieur à | x < y |
false |
>= |
Supérieur ou égal à | x >= y |
true |
<= |
Inférieur ou égal à | x <= y |
false |
Exemple :
int a = 7;
int b = 10;
bool res1 = (a < b); // true
bool res2 = (a == b); // false
Console.WriteLine(res1); // true
Console.WriteLine(res2); // false
Opérateurs logiques
Utilisés pour combiner des conditions. Ces conditions sont de type bool. Ils exécutent les opérations logiques et, ou et non.
| Valeur 1 | Valeur 2 | && (et) | || (ou) |
|---|---|---|---|
true |
true |
true |
true |
true |
false |
false |
true |
false |
true |
false |
true |
false |
false |
false |
false |
Les opérateurs s’utilisent ainsi :
| Opérateur | Description | Exemple (a=true, b=false) |
Résultat |
|---|---|---|---|
&& |
et | a && b |
false |
|| |
ou | a || b |
true |
! |
non | !a |
false |
Par exemple, si la variable x est inférieure à 5 et la variable y est supérieure à 10, la condition s’écrit ainsi :
bool crit = x < 5 && y > 10;
Un exemple simple : si l’âge est supérieur ou égal à 18 et que l’utilisateur possède un permis de conduire, il peut conduire une voiture :
using System;
class Program
{
static void Main()
{
Console.Write("Entrez votre âge : ");
int age = int.Parse(Console.ReadLine());
Console.Write("Avez-vous un permis de conduire ? (Y/N): ");
string reponse = Console.ReadLine().ToUpper();
bool permis = (reponse == "Y");
if (age >= 18 && permis)
{
Console.WriteLine("Vous pouvez conduire une voiture.");
}
else
{
Console.WriteLine("Vous ne pouvez pas conduire une voiture.");
}
}
}
Opérateurs d’affectation composés
Combinent l’affectation avec l’arithmétique. Par exemple, ajouter 5 à un nombre, soustraire 2 ou le multiplier par 6.
| Opérateur | Description | Exemple (x=10) |
Résultat |
|---|---|---|---|
+= |
ajouter | x += 5 |
15 |
-= |
soustraire | x -= 2 |
8 |
*= |
multiplier | x *= 6 |
60 |
/= |
diviser | x /= 2 |
5 |
%= |
modulo | x %= 2 |
0 |
Opérateurs d’incrémentation et de décrémentation
Utilisés pour augmenter ou diminuer un nombre de 1.
int x = 5;
x++; // 6
x--; // 5
Préfixe vs postfixe :
int a = 5;
Console.WriteLine(++a); // 6 (incrémenter puis afficher)
Console.WriteLine(a++); // 6 (afficher puis incrémenter → a=7)
Opérateur ternaire (?:)
Une écriture courte du if-else. Permet de choisir l’une des deux valeurs selon une condition.
using System;
class Program
{
static void Main()
{
Console.Write("Entrez un nombre : ");
int num = int.Parse(Console.ReadLine());
string resultat = (num % 2 == 0)
? "Le nombre que vous avez saisi est pair."
: "Le nombre que vous avez saisi est impair.";
Console.WriteLine(resultat);
}
}
- Le nombre est lu avec
Console.ReadLine(). - Converti de
stringenintavecint.Parse. - L’opérateur ternaire (
?:) vérifienum % 2 == 0. - Le message de résultat est affiché à l’écran.
Opérateurs de coalescence nulle (?? et ??=)
En C#, null indique qu’une variable ne référence aucune valeur. En d’autres termes, la variable est définie mais ne contient aucune valeur. On retrouve souvent ce cas avec les variables string ou de type classe (types référence).
Parfois, nous souhaitons affecter une valeur par défaut à la place de null. C’est là que les opérateurs de coalescence nulle interviennent :
Exemple 1 : utilisation de ??
string name = null;
string result = name ?? "Sans nom";
Console.WriteLine(result);
Exemple 2 : utilisation de ??=
string name = null;
name ??= "Inconnu";
Console.WriteLine(name); // Inconnu
Exemple (Panier d'achat)
using System;
using System.Globalization;
class Program
{
static void Main()
{
// Culture d'entrée : éviter les problèmes de point/virgule
CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
// 1) Lecture des données utilisateur
Console.Write("Nom (vous pouvez laisser vide) : ");
string nom = Console.ReadLine();
nom = string.IsNullOrWhiteSpace(nom) ? null : nom.Trim();
nom ??= "Invité"; // (??=) valeur par défaut si null
Console.Write("Ville (vous pouvez laisser vide) : ");
string ville = Console.ReadLine();
ville = string.IsNullOrWhiteSpace(ville) ? null : ville.Trim();
string villeInfo = ville ?? "Ville inconnue"; // (??) valeur affichée si null
Console.Write("Montant du panier (ex. 749.90) : ");
double panier = double.Parse(Console.ReadLine());
Console.Write("Êtes-vous membre ? (Y/N) : ");
bool membre = Console.ReadLine().Trim().ToUpper() == "Y";
Console.Write("Code promo (vous pouvez laisser vide) : ");
string code = Console.ReadLine();
code = string.IsNullOrWhiteSpace(code) ? null : code.Trim().ToUpper();
Console.Write("Souhaitez-vous une livraison express ? (Y/N) : ");
bool express = Console.ReadLine().Trim().ToUpper() == "Y";
// 2) Règles métier et opérateurs
// Arithmétique : TVA, remise, livraison, total
const double TvaTaux = 0.20; // 20% TVA
const double MembreRed1 = 0.05; // 5% si membre
const double MembreRed2 = 0.10; // 10% si membre et panier >= 500
const double CodeRed = 0.10; // +10% si code "REDUC10" ou "CODE10"
const double MaxRemise = 0.25; // Remise max 25%
const double LivStandard = 19.90;
const double LivExpress = 49.90;
const double SeuilLivGratuite = 300.0;
// Comparaison + logique : déterminer le taux de remise
double remiseTaux = membre && panier >= 500
? MembreRed2
: (membre ? MembreRed1 : 0.0);
// Logique : vérification du code promo (OU)
if (code == "REDUC10" || code == "CODE10")
remiseTaux += CodeRed; // Affectation composée (+=)
// Appliquer le plafond
remiseTaux = Math.Min(remiseTaux, MaxRemise);
// Calcul remise et TVA
double remiseMontant = panier * remiseTaux;
double sousTotal = panier - remiseMontant;
double tva = sousTotal * TvaTaux;
// Livraison : express ? sinon vérifier seuil gratuit
double livraison = express
? LivExpress
: (sousTotal >= SeuilLivGratuite ? 0.0 : LivStandard);
// Total général
double total = sousTotal + tva;
total += livraison;
// 3) Résumé
Console.WriteLine();
Console.WriteLine("— Résumé de paiement —");
Console.WriteLine($"Client : {nom} ({villeInfo})");
Console.WriteLine($"Panier : {panier:0.00} EUR");
Console.WriteLine($"Remise % : {(remiseTaux * 100):0}% (-{remiseMontant:0.00} EUR)");
Console.WriteLine($"Sous-total : {sousTotal:0.00} EUR");
Console.WriteLine($"TVA (20%) : {tva:0.00} EUR");
Console.WriteLine($"Livraison : {livraison:0.00} EUR {(express ? "(Express)" : "(Standard)")}");
Console.WriteLine($"Total général: {total:0.00} EUR");
// Exemple logique supplémentaire : note sur la facture
bool panierEleve = total >= 1000.0;
Console.WriteLine(panierEleve && membre
? "Note : Vous avez gagné des points supplémentaires pour votre commande de grande valeur."
: "Note : Avec un abonnement, vous pouvez bénéficier de réductions supplémentaires.");
}
}
Avec cet exemple, vous pouvez tester dans votre application console une mise en pratique combinée des opérateurs.
La sortie du programme ressemblera à la capture d’écran ci-dessus.