Maîtriser les énumérations en C : Définition, déclaration et opérations sur les drapeaux
Énumérations en C
Explorez comment définir, déclarer et exploiter les énumérations en C — complet avec exemples pratiques, techniques de drapeaux et informations sur la taille.
En C, une énumération (enum) est un type qui regroupe un ensemble de constantes entières nommées, offrant une intention plus claire et une sécurité de type à la compilation.
enum flag {const1, const2, ..., constN};
Par défaut, const1 vaut 0, const2 vaut 1, et ainsi de suite. Vous pouvez redéfinir ces valeurs lors de la déclaration si nécessaire.
// Personnalisation des constantes d'énumération
enum suit { club = 0, diamonds = 10, hearts = 20, spades = 3, };
Déclaration de type énuméré
La définition d'un enum crée un nouveau type utilisable pour des variables. Voici comment déclarer et instancier l'un d'eux.
enum boolean {false, true};
enum boolean check; // déclaration de variable
La variable check est maintenant de type enum boolean. Ses valeurs correspondent à false = 0 et true = 1.
enum boolean {false, true} check;
Exemple : Énumération des jours de la semaine
#include <stdio.h>
enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
int main() {
enum week today = Wednesday;
printf("Jour %d", today + 1);
return 0;
}
Sortie
Jour 4
Pourquoi utiliser les énumérations ?
Les variables d'énumération contiennent une seule valeur nommée, rendant le code auto-documenté. Elles occupent aussi le même stockage qu'un int par défaut, généralement 4 octets sur la plupart des plateformes.
#include <stdio.h>
enum suit {club = 0, diamonds = 10, hearts = 20, spades = 3} card;
int main() {
card = club;
printf("Taille de la variable enum = %d octets", sizeof(card));
return 0;
}
Sortie
Taille de la variable enum = 4 octets
Cette taille est cohérente avec le type int sous-jacent, bien que la taille exacte puisse varier selon le compilateur et l'architecture.
Utilisation des énumérations pour les drapeaux
Les énumérations excellent pour représenter des drapeaux quand chaque constante est une puissance de deux distincte. Cela permet de combiner les drapeaux avec OU bit à bit et de les tester avec ET bit à bit.
#include <stdio.h>
enum designFlags {ITALICS = 1, BOLD = 2, UNDERLINE = 4} button;
Puisque les valeurs sont des puissances de deux :
// Représentation binaire ITALICS = 00000001 BOLD = 00000010 UNDERLINE = 00000100
Vous pouvez les combiner :
#include <stdio.h>
enum designFlags {BOLD = 1, ITALICS = 2, UNDERLINE = 4};
int main() {
int myDesign = BOLD | UNDERLINE; // 00000001 | 00000100 = 00000101
printf("%d", myDesign);
return 0;
}
Sortie
5
Une sortie de 5 indique que BOLD et UNDERLINE sont actifs.
Pour vérifier un drapeau spécifique :
if (myDesign & ITALICS) {
// gérer l'italique
}
Bien que vous puissiez obtenir de nombreux résultats sans énumérations, elles fournissent un moyen robuste et typé pour gérer des constantes liées — surtout pour les opérations sur drapeaux.
Langue C
- C# Hello World — Construire votre première application C#
- Comprendre les mots-clés et identificateurs C# : règles, listes et bonnes pratiques
- Maîtriser les variables C# et types de données primitifs : guide complet
- Opérateurs C# — Guide complet des opérateurs en C#
- Maîtriser les opérateurs bit à bit et de décalage en C# : Guide complet
- Fondamentaux C# : Entrées et sorties essentielles
- Expressions, instructions et blocs C# : Guide complet avec exemples pratiques
- Maîtriser les commentaires C# : Types, bonnes pratiques et documentation XML
- Maîtriser l'instruction Switch C# : Syntaxe, exemples et bonnes pratiques