Enums en français

Qu'est-ce qu'un Enum ?

En C, un enum, ou énumération, est un type de données défini par l'utilisateur. Il permet d'associer des noms à des constantes entières, ce qui rend le code plus lisible et plus facile à maintenir. La déclaration d'un enum se fait à l'aide du mot-clé enum.

Syntaxe des Enums

La structure de base pour définir un enum est la suivante :

enum nom {
  membre1 = ,
  membre2,
  membre3,
  ...
  membreN
};

Chaque membre de l'enum peut avoir une constante entière définie (comme 0, 10, 2) ou simplement utiliser le nom du membre.

Exemples d'utilisation des Enums

Considérons un exemple simple où nous n'assignons pas de valeurs explicites aux membres de l'enum jour. Dans ce cas, le compilateur attribue par défaut des valeurs qui commencent à 0. Par exemple, dimanche obtiendra la valeur 0, lundi la valeur 1, et ainsi de suite.

#include 
enum fruits {pomme, orange, banane, peche, raisin};
int main() {
    enum fruits d = banane;
    printf("Le numéro du fruit stocké dans d est %d", d);
    return 0;
}

La sortie de cet exemple sera : Le numéro du fruit stocké dans d est 2

Un autre fait intéressant est que deux membres d'un enum peuvent avoir la même valeur. Par exemple, dans l'enum ci-dessous, En_Cours et En_Execution sont tous les deux égaux à 1.

#include 
enum Etat {A_Faire = 0, En_Cours = 1, En_Execution = 1};
int main() {
    printf("%d, %d, %d", A_Faire, En_Cours, En_Execution);
    return 0;
}

La sortie sera : 0, 1, 1

De plus, nous pouvons attribuer des valeurs à des membres de l'enum dans n'importe quel ordre. Les membres non assignés recevront la valeur du membre précédent augmentée de un.

#include 
enum jour {dimanche = 1, lundi, mardi = 20, mercredi, jeudi = 10, vendredi, samedi};
int main() {
    printf("%d %d %d %d %d %d %d", dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi);
    return 0;
}

Cela produira la sortie suivante : 1 2 20 21 10 11 12

Note: Il est important de se rappeler que toutes les constantes d'un enum doivent être uniques dans leur portée.