C Enums onder de knie krijgen: Definitie, declaratie en vlag-operaties
C Enums
Ontdek hoe je enums in C definieert, declareert en benut – compleet met praktische voorbeelden, vlag-technieken en grootte-inzichten.
In C is een enumeratie (enum) een type dat een verzameling genamede integrale constanten groepeert, wat duidelijke intentie en compile-tijd type-veiligheid biedt.
enum vlag {const1, const2, ..., constN};
Standaard is const1 gelijk aan 0, const2 gelijk aan 1, enz. Je kunt deze waarden bij declaratie overschrijven indien nodig.
// Enum constanten aanpassen
enum suit { club = 0, diamonds = 10, hearts = 20, spades = 3, };
Enumerated Type Declaratie
Het definiëren van een enum creëert een nieuw type dat gebruikt kan worden voor variabelen. Hier is hoe je er een declareert en instantieert.
enum boolean {false, true};
enum boolean check; // variabele declaratie
De variabele check is nu van type enum boolean. De waarden mappen op false = 0 en true = 1.
enum boolean {false, true} check;
Voorbeeld: Weekdag-enumeratie
#include <stdio.h>
enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
int main() {
enum week today = Wednesday;
printf("Dag %d", today + 1);
return 0;
}
Output
Dag 4
Waarom Enums gebruiken?
Enum-variabelen houden een enkele genamede waarde, wat code zelf-documenterend maakt. Ze nemen standaard dezelfde opslag in als een int, meestal 4 bytes op de meeste platforms.
#include <stdio.h>
enum suit {club = 0, diamonds = 10, hearts = 20, spades = 3} card;
int main() {
card = club;
printf("Grootte van enum variabele = %d bytes", sizeof(card));
return 0;
}
Output
Grootte van enum variabele = 4 bytes
Deze grootte is consistent met de onderliggende int type, hoewel de exacte grootte kan variëren per compiler en architectuur.
Enums gebruiken voor vlaggen
Enums blinken bij het representeren van vlaggen wanneer elke constante een distincte macht van twee is. Dit stelt je in staat om vlaggen te combineren met bitwise OR en ze te testen met bitwise AND.
#include <stdio.h>
enum designFlags {ITALICS = 1, BOLD = 2, UNDERLINE = 4} button;
Omdat de waarden machten van twee zijn:
// Binaire representatie ITALICS = 00000001 BOLD = 00000010 UNDERLINE = 00000100
Je kunt ze combineren:
#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;
}
Output
5
Een output van 5 geeft aan dat zowel BOLD als UNDERLINE actief zijn.
Om een specifieke vlag te checken:
if (myDesign & ITALICS) {
// handle italics
}
Hoewel je veel resultaten kunt bereiken zonder enums, bieden ze een robuuste, type-veilige manier om gerelateerde constanten te beheren – vooral voor vlag-operaties.
C Taal
- C# Hello World – Uw eerste C# applicatie bouwen
- C# Keywords en Identifiers begrijpen: Regels, lijsten en best practices
- C# Variabelen & Primitive Datatypes onder de knie krijgen: Complete gids
- C# Operators – Uitgebreide gids voor operators in C#
- C# Bitwise en Bit Shift Operators: Een Uitgebreide Gids
- C# Fundamentals: Invoer en Uitvoer Basis
- C# Expressies, Statements & Blokken: Uitgebreide Gids met Praktische Voorbeelden
- C# Comments Onder de Loep: Types, Best Practices en XML Documentatie
- De C# Switch Statement: Syntaxis, Voorbeelden & Best Practices
- De C# Ternaire Operator: Beknopte Gids voor Conditionele Expressies
- C# Break Statement: Hoe en Wanneer Te Gebruiken