Langage C

Notification de cookies

Nous utilisons des cookies pour améliorer votre expérience. En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Plus d'informations

Énumération (ou enum) en C

Énumération (ou enum) est un type de données défini par l'utilisateur en C. Il est principalement utilisé pour attribuer des noms à des constantes entières. Ces noms facilitent la lecture et la maintenance d'un programme.

Le mot-clé ‘enum’ est utilisé pour déclarer de nouveaux types d’énumération en C et C++. Voici un exemple de déclaration enum.

enum flag { const1, const2, ..., constN };
  • Ici, le nom de l'énumération est flag
  • const1, const2, ...., constN sont des valeurs de type flag.

Par défaut, const1 est 0, const2 est 1 et ainsi de suite. Vous pouvez modifier les valeurs par défaut des éléments enum lors de la déclaration (si nécessaire).

Exemple 1 :
                                enum  Etat {Vrai = 1, Faux = 0}; 
                            

Déclaration de type énuméré

Lorsque vous créez un type énuméré, seul le schéma pour la variable est créé. Voici comment vous pouvez créer des variables de type enum.

Exemple 2 :
                                enum boolean{ 
                                    Vrai, Faix 
                                };
                                enum boolean etat;
                            

Ici, une variable etat de type enum boolean est créée.
Voici un autre moyen de déclarer la même variable etat en utilisant une syntaxe différente.

Exemple 3 :
                                enum boolean{ 
                                    Vrai, Faix 
                                }etat;
                            
Exemple 4 :
                                #include < stdio.h>
                                enum semaine { dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi };
                                int main(void){
                                    enum semaine jour;
                                    jour=mercredi;

                                    printf("le jour est : %d \n", jour);
                                    printf("le numéro du jour suivant est : %d \n", jour + 1);

                                    return 0;
                                }
                            
le numéro du jour est : 3
le numéro du jour suivant est : 4

Pourquoi les enums sont-ils utilisés?

La variable enum ne prend qu'une valeur sur de nombreuses valeurs possibles. Exemple pour le démontrer,

Exemple 5 :
                                #include < stdio.h>
                                enum etat {
                                    pret=0,
                                    elu=1,
                                    bloque=2
                                };
                                int main(void){
                                    enum etat p1;
                                    p1=elu;

                                    printf("la taille de p1 est : %d octets \n", sizeof(p1));

                                    return 0;
                                }
                            
la taille de p1 est : 4 octets

C'est parce que la taille d'un entier est de 4 octets. Cela fait enum un bon choix pour travailler avec des drapeaux.

Vous pouvez accomplir la même tâche en utilisant des structures. Cependant, travailler avec enums vous donne l'efficacité ainsi que la flexibilité.

Faits intéressants sur l'initialisation de enum.

Deux noms enum peuvent avoir la même valeur. Par exemple, dans le programme C suivant, les valeurs "pret" et "elu" ont la même valeur 0.

Exemple 6 :
                                #include < stdio.h>
                                enum etat {
                                    pret=0,
                                    elu=0,
                                    bloque=1
                                };
                                int main(void){
                                    
                                    printf("%d - %d - %d",pret,elu,bloque);

                                    return 0;
                                }
                            
0 - 0 - 1

 Si nous n'attribuons pas explicitement de valeurs à des noms enum, le compilateur affecte par défaut des valeurs à partir de 0. Par exemple, dans le programme C suivant, dimanche obtient la valeur 0, lundi vaut 1, etc.

Exemple 7 :
                                #include < stdio.h>
                                enum semaine { dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi };
                                int main(void){
                                    enum semaine jour;
                                    jour=mercredi;

                                    printf("le jour est : %d \n", jour);

                                    return 0;
                                }
                            
le numéro du jour est : 3
Exemple 8 :
                                #include < stdio.h>
                                enum semaine { dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi };
                                int main(void){
                                    enum semaine jour;
                                    jour=mercredi;

                                    printf("le jour est : %d \n", jour);

                                    return 0;
                                }
                            
le numéro du jour est : 3

La valeur attribuée aux noms d’énumération doit être une constante entière, c’est-à-dire qu’elle doit être comprise dans la plage allant de la valeur entière minimale possible à la valeur maximale possible.

 Toutes les constantes enum doivent être uniques dans leur portée. Par exemple, le programme suivant échoue lors de la compilation.

Exemple 9 :
                                enum state
                                {
                                    working,
                                    failed
                                };
                                enum result
                                {
                                    failed,
                                    passed
                                };
                                    
                                int main()
                                { 
                                    return 0; 
                                }
                            
prog.c:11:5: error: redefinition of enumerator 'failed'

Partager ce cours avec tes amis :

Rédigé par M. ESSADDOUKI

Learning a new programming language is an easy thing, but the most difficult thing is how to design efficient algorithms for real-world problems, so don't be a programmer, be a problems solver.

Cours Similaires :