Les énumérations

Nous avons vu au paragraphe [*] que l'on pouvait déclarer des constantes nommées de la manière suivante :
enum {LUNDI, MARDI, MERCREDI, JEUDI, VENDREDI, SAMEDI, DIMANCHE};
qui déclare les identificateurs LUNDI, MARDI, etc. comme étant des constantes entières de valeur 0, 1, etc. Ce qui n'avait pas été dit à ce moment là, c'est que les énumérations fonctionnent syntaxiquement comme les structures : après le mot-clé enum il peut y avoir un identificateur appelé étiquette d'énumération qui permettra plus loin dans le programme de déclarer des variables de type énumération. Exemple :
enum jour {LUNDI, MARDI, MERCREDI, JEUDI,
           VENDREDI, SAMEDI, DIMANCHE};

enum jour j1, j2;
j1 = LUNDI;
j2 = MARDI;

L'exemple ci-dessus est conforme à ce qui nous semble être de bonnes règles de programmation : déclarer d'abord le type énumération en lui donnant un nom grâce à une étiquette d'énumération et ensuite utiliser ce nom pour déclarer des variables. Cependant, comme pour les structures, le langage C permet de déclarer des variables dans la déclaration du type énumération, éventuellement en omettant l'étiquette d'énumération. Exemples :

enum jour {LUNDI, MARDI, MERCREDI, JEUDI,
           VENDREDI, SAMEDI, DIMANCHE} d1, d2;
déclare d1 et d2 comme étant des variable de type enum jour,
enum {FAUX, VRAI} b1, b2;
déclare b1 et b2 comme étant des variables de type énumération sans nom, dont les valeurs peuvent être FAUX ou VRAI. Nous avons expliqué plus haut pourquoi un tel style de programmation nous semblait mauvais.

Matthieu Moy 2017-02-08