Les énumérations sont un moyen commode de regrouper des constantes, lorsquelles ont une signification voisine, ou reliée. Voici un exemple dénumération (il sagit des codes de valeurs des touches du pavé numérique dun PC, qui sont des caractères étendus) :
enum carac_pave_num { HOME = 71, UP = 72, PGUP = 73, LEFT = 75, RIGHT = 77, END = 79, DOWN = 80, PGDN = 81, INS = 82, ANNL = 83 };
Cet ensemble permet de définir dun coup une succession de constantes, qui sont considérées comme des entiers en réalité.
On peut également définir ainsi des constantes symboliques :
enum jour_semaine { Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche };
Dans ce cas, comme on na pas précisé de valeurs, le compilateur attribue automatiquement les valeurs 0, 1, 2, ..., 6 aux constantes définies. On peut alors définir une variable de type jour_semaine :
jour_semaine js = Mercredi;
De telles écritures sont par exemple nettement plus claires dans des boucles :
for (jour_semaine js = Lundi; js <= Dimanche; js++) if (js < Samedi) cout << "Au boulot !\n"; else cout << "Dodo !\n";
Notons que cela nempêche nullement js de sortir de lintervalle [0..6] ; dans ce cas cependant, elle ne correspond plus aux constantes de lénumération.
Dune façon générale, dans une énumération, on peut omettre le nom de lénumération (créant ainsi une énumération anonyme, qui nest donc quune liste de constantes) et linitialisation de certaines constantes ; dans ce cas, chaque constante pour laquelle on na pas précisé de valeur vaut 1 de plus que la précédente, ou 0 si elle est la première. On aurait donc pu écrire plus simplement :
enum { HOME = 71, UP, PGUP, LEFT = 75, RIGHT = 77, END = 79, DOWN, PGDN, INS, ANNL };
Dans ce cas, UP
vaut 1+HOME
, soit 71, etc. Les valeurs sont donc bien les mêmes. Comme lénumération na pas de nom, il nest pas possible de créer une variable ayant le type de ces constantes ; il faut utiliser une variable entière normale.
![]() |
![]() |
Suivant ![]() |