C enums

In C programming, an enumeration type (also called enum) is a data type that consists of integral constants. To define enums, the enum keyword is used.

enum flag ;

By default, const1 is 0, const2 is 1 and so on. You can change default values of enum elements during declaration (if necessary).

// Changing default values of enum constants enum suit < club = 0, diamonds = 10, hearts = 20, spades = 3, >;

Enumerated Type Declaration

When you define an enum type, the blueprint for the variable is created. Here's how you can create variables of enum types.

enum boolean ; enum boolean check; // declaring an enum variable

Here, a variable check of the type enum boolean is created.

You can also declare enum variables like this.

enum boolean check;

Here, the value of false is equal to 0 and the value of true is equal to 1.

Example: Enumeration Type

#include enum week ; int main() < // creating today variable of enum week type enum week today; today = Wednesday; printf("Day %d",today+1); return 0; > 

Output

Day 4

Why enums are used?

An enum variable can take only one value. Here is an example to demonstrate it,

#include enum suit < club = 0, diamonds = 10, hearts = 20, spades = 3 >card; int main()
Size of enum variable = 4 bytes

Here, we are getting 4 because the size of int is 4 bytes.

This makes enum a good choice to work with flags.

How to use enums for flags?

Let us take an example,

enum designFlags < ITALICS = 1, BOLD = 2, UNDERLINE = 4 >button; 

Suppose you are designing a button for Windows application. You can set flags ITALICS , BOLD and UNDERLINE to work with text.

There is a reason why all the integral constants are a power of 2 in the above pseudocode.

// In binary ITALICS = 00000001 BOLD = 00000010 UNDERLINE = 00000100

Since the integral constants are a power of 2, you can combine two or more flags at once without overlapping using bitwise OR | operator. This allows you to choose two or more flags at once. For example,

#include enum designFlags < BOLD = 1, ITALICS = 2, UNDERLINE = 4 >; int main() < int myDesign = BOLD | UNDERLINE; // 00000001 // | 00000100 // ___________ // 00000101 printf("%d", myDesign); return 0; >

Output

When the output is 5, you always know that bold and underline is used.

Also, you can add flags according to your requirements.

if (myDesign & ITALICS) < // code for italics >

Here, we have added italics to our design. Note, only code for italics is written inside the if statement.

You can accomplish almost anything in C programming without using enumerations. However, they can be pretty handy in certain situations.

Table of Contents