Opérateur Ternaire en C

Bonjour à tous, futurs magiciens de la programmation ! Aujourd'hui, nous allons entreprendre un voyage passionnant à la découverte de l'opérateur ternaire en C. Ne vous inquiétez pas si vous n'en avez jamais entendu parler auparavant - à la fin de cette leçon, vous mestrez cet outil puissant comme un pro !

C - Ternary Operator

Qu'est-ce que l'opérateur ternaire ?

Avant de plonger dedans, mettons les choses en place. Imaginez que vous êtes dans une crème glacée et que vous devez choisir entre chocolat et vanille. Habituellement, vous utiliseriez une instruction if-else pour prendre cette décision dans le code. Mais que diriez-vous s'il existait une manière plus courte et plus élégante ? C'est là que rentre en jeu l'opérateur ternaire !

L'opérateur ternaire est comme une version compacte de l'instruction if-else. On l'appelle "ternaire" parce qu'il prend trois opérandes. Pensez-y comme un raccourci pour la prise de décision dans votre code.

Syntaxe de l'opérateur ternaire en C

Décomposons la syntaxe de cet opérateur ingénieux :

condition ? expression1 : expression2

Voici comment il fonctionne :

  1. D'abord, nous évaluons la condition.
  2. Si elle est vraie, nous exécutons expression1.
  3. Si elle est fausse, nous exécutons expression2.

Simple, n'est-ce pas ? C'est comme demander : "Est-ce que cette condition est vraie ? Si oui, fais cela ; si non, fais cela." Maintenant, voyons ça en action !

Exemple 1 : Opérateur Ternaire en C

Commençons par un exemple de base :

#include <stdio.h>

int main() {
int age = 20;
char *status = (age >= 18) ? "adulte" : "mineur";
printf("Vous êtes un %s.\n", status);
return 0;
}

Dans cet exemple, nous vérifions si age est de 18 ans ou plus. Si c'est le cas, nous affectons "adulte" à status ; sinon, nous affectons "mineur". La sortie sera "Vous êtes un adulte."

Reprenons :

  • (age >= 18) est notre condition
  • "adulte" est ce que nous affectons si la condition est vraie
  • "mineur" est ce que nous affectons si la condition est fausse

Exemple 2 : Comparaison de Nombres

Utilisons maintenant l'opérateur ternaire pour trouver le plus grand des deux nombres :

#include <stdio.h>

int main() {
int a = 10, b = 20;
int max = (a > b) ? a : b;
printf("Le plus grand nombre est : %d\n", max);
return 0;
}

Ici, nous comparons a et b. Si a est plus grand, nous affectons a à max ; sinon, nous affectons b. La sortie sera "Le plus grand nombre est : 20".

Exemple 3 : Pair ou Impair

Utilisons l'opérateur ternaire pour vérifier si un nombre est pair ou impair :

#include <stdio.h>

int main() {
int number = 7;
printf("%d est %s.\n", number, (number % 2 == 0) ? "pair" : "impair");
return 0;
}

Dans cet exemple, nous utilisons l'opérateur modulo (%) pour vérifier si number est divisible par 2. Si c'est le cas, nous affichons "pair" ; sinon, nous affichons "impair". La sortie sera "7 est impair."

Exemple 4 : Valeur Absolue

Voici comment nous pouvons utiliser l'opérateur ternaire pour trouver la valeur absolue d'un nombre :

#include <stdio.h>

int main() {
int number = -5;
int absolute = (number < 0) ? -number : number;
printf("La valeur absolue de %d est %d.\n", number, absolute);
return 0;
}

Si number est négatif, nous le multiplions par -1 pour le rendre positif ; sinon, nous le laissons tel quel. La sortie sera "La valeur absolue de -5 est 5."

Exemple 5 : Classification des Notes

Utilisons l'opérateur ternaire pour classer les notes :

#include <stdio.h>

int main() {
int score = 75;
char *result = (score >= 60) ? "Réussite" : "Échec";
printf("Votre score est %d. Résultat : %s\n", score, result);
return 0;
}

Ici, nous vérifions si le score est de 60 ou plus. Si c'est le cas, nous affectons "Réussite" à result ; sinon, nous affectons "Échec". La sortie sera "Votre score est 75. Résultat : Réussite".

Exemple 6 : Vérification de l'Année Bissextile

Utilisons l'opérateur ternaire pour vérifier si une année est bissextile :

#include <stdio.h>

int main() {
int year = 2024;
char *result = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ? "Année bissextile" : "Pas une année bissextile";
printf("%d est %s.\n", year, result);
return 0;
}

Cet exemple vérifie si year est divisible par 4 mais pas par 100, ou s'il est divisible par 400. Si l'une ou l'autre des conditions est vraie, c'est une année bissextile. La sortie sera "2024 est une année bissextile."

Opérateur Ternaire Emballé

Maintenant, montons d'un cran avec les opérateurs ternaires imbriqués. C'est comme jouer aux poupées russes avec votre code !

#include <stdio.h>

int main() {
int num = 10;
char *result = (num > 0) ? "positif" : (num < 0) ? "négatif" : "zéro";
printf("%d est %s.\n", num, result);
return 0;
}

Dans cet exemple, nous vérifions d'abord si num est positif. Si ce n'est pas le cas, nous vérifions si c'est négatif. Si ce n'est ni l'un ni l'autre, c'est zéro. La sortie sera "10 est positif."

Conclusion

Et voilà, les amis ! Vous avez appena maîtrisé l'opérateur ternaire en C. C'est un outil puissant qui peut rendre votre code plus concis et lisible lorsqu'il est utilisé correctement. Souvenez-vous, avec grand pouvoir vient grande responsabilité - utilisez l'opérateur ternaire avec sagesse !

Voici un tableau de référence rapide des méthodes que nous avons couvertes :

Méthode Syntaxe Exemple
Ternaire de Base condition ? expr1 : expr2 (age >= 18) ? "adulte" : "mineur"
Comparaison de Nombres (a > b) ? a : b int max = (a > b) ? a : b;
Pair ou Impair (num % 2 == 0) ? "pair" : "impair" (7 % 2 == 0) ? "pair" : "impair"
Valeur Absolue (num < 0) ? -num : num int abs = (num < 0) ? -num : num;
Classification des Notes (score >= 60) ? "Réussite" : "Échec" char *result = (score >= 60) ? "Réussite" : "Échec";
Vérification de l'Année Bissextile ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ? "Année bissextile" : "Pas une année bissextile" char *result = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ? "Année bissextile" : "Pas une année bissextile";
Ternaire Emballé cond1 ? expr1 : cond2 ? expr2 : expr3 (num > 0) ? "positif" : (num < 0) ? "négatif" : "zéro"

Continuez à vous entraîner, et bientôt vous serez des champions de l'opérateur ternaire ! Bonne programmation !

Credits: Image by storyset