Chargement...

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);
    }
}

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.

Application console C# Panier

La sortie du programme ressemblera à la capture d’écran ci-dessus.