Les énumérations

Définition

Ces types sont créés par définition du domaine des valeurs, c'est-à-dire de la liste des valeurs entières constantes que peuvent prendre les objets de ce type.

Un objet de type énumération est défini par le mot-clef enum et un identificateur du type, suivis de la liste des identifiants représentant les valeurs constantes de ce type.

Les valeurs constantes peuvent être définies au cours de la déclaration ou sont codées par défaut comme suite de valeurs entières à partir de 0.

Exemple

1
main(){
2
  enum couleur {blanc, bleu=4, jaune=12, vert=16, noir} ;
3
              /* valeurs de codage choisies par le programmeur,
4
                 l'identifiant blanc prend la valeur 0 car c'est la valeur par défaut de la premiere constante
5
                 noir prend la valeur 17 car elle se trouve à la suite de vert de valeur 16
6
              */
7
  enum couleur c ;
8
  c = bleu ;
9
  printf("c = %d\n",c);    /* le format utilisé est le format entier et l'affichage donne 4 */
10
  enum jour {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche};
11
  enum jour j ;
12
  j = jeudi ;
13
  printf("j = %d\n",j) ;   /* l'affichage est la valeur entière 3 */
14
}
15
 

Notons que les constantes correspondent à des entiers. Ainsi le langage C nous permet d'utiliser des constantes ou variables appartenant à des types énumérés distincts dans une même expression.

Toutefois, le compilateur signale cet abus d'utilisation par un warning. Il est possible d'imposer la signalisation d'une erreur à l'aide d'une option de compilation (par exemple pour GCC-Werror=enum-compare).