Exood4 Studio - Video Game Development, Toulouse (France)
Exood4 Studios Exood4 Tutorials

   
L a n g a g e   C

L e s   é n u m é r a t i o n s






 Un type énumération est un ensemble de constantes nommées :

enum jour { lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche };
enum jour aujourdhui, demain;

 Ce qui définit deux variables aujourdhui et demain pouvant prendre pour valeur l'une des constantes énumérées, ce qui peut s'écrire aussi :

enum { lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche } aujourdhui, demain;

 Mais l'absence de nom de type rend impossible une déclaration ultérieure d'autres variables de même type.

 L'affectation de ces variables s'effectue normalement :

aujourdhui = lundi;
demain = mardi;

 Une valeur entière est en fait associée séquentiellement à chaque constante, en commençant à 0 : 0 est associé à lundi, 1 à mardi etc... Ainsi l'affectation et la comparaison de constantes d'énumération n'est rien d'autre qu'une affectation et une comparaison d'entiers.

 demain = aujourdhui + 1; est syntaxiquement correct, mais ne donne pas le résultat souhaité lorsque la variable aujourdhui a pour valeur dimanche.

Attention au conflit de noms, cette déclaration est incorrecte :
char dimanche[10];
enum jour { lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche };

 Par contre :

/* déclaration d'un bloc */
{
 ...
 char dimanche[10];
}

 est correct puisque la variable dimanche masque, dans le bloc, la constante de même nom.


 Des valeurs peuvent être imposées aux constantes, ce qui réajuste la distribution séquentielle des valeurs :

enum piece { fou = 2, pion = 1, cavalier, tour, reine, roi = 100 }; /* valeurs : 2 1 2 3 4 100 */

 enum piece est le nom du nouveau type et peut être employé comme tout autre type :

enum piece *blanc;
blanc = (enum piece *) malloc (16 * sizeof(enum piece));



 L'utilisation de typedef permet d'alléger les notations :

typedef enum piece PIECE;
PIECE *blanc;

blanc = (PIECE *) malloc (16 * sizeof(PIECE));



  Retour en haut de page Page suivante