C Programming Enumerations
Last modified by Microchip on 2023/11/09 09:06
Enumerations:
- Are unique integer data types
- May only contain a specified list of values
- Values are specified as symbolic constants
How to Create an Enumeration Type
Syntax
enum typeName {label0, label1, ... , labeln}
Where compiler sets label0=0, label1=1, labeln=n
Where compiler sets label0=0, label1=1, labeln=n
Creates an ordered list of constants. Each label’s value is one greater than the previous label.
Example
1
enum weekday {SUN, MON, TUE, WED, THR, FRI, SAT};
Label Values:
SUN = 0, MON = 1, TUE = 2, WED = 3, THR = 4 , FRI = 5, SAT = 6
SUN = 0, MON = 1, TUE = 2, WED = 3, THR = 4 , FRI = 5, SAT = 6
Any label may be assigned a specific value. The following labels will increment from that value.
enum typeName {label0 = const0,..., labeln}
Where compiler sets label0=const0, label1=(const0+1),...
Where compiler sets label0=const0, label1=(const0+1),...
Example
1
enum people {Rob, Steve, Paul = 7, Bill, Gary};
Label Values:
Rob = 0, Steve = 1, Paul = 7, Bill = 8, Gary = 9
Rob = 0, Steve = 1, Paul = 7, Bill = 8, Gary = 9
How to Declare an Enumeration Type Variable
Declared along with type
Syntax
enum typeName {const-list} varname1...;
Declared independently
Syntax
enum typeName varName1...,varNamen;
Example
1
2
3
2
3
enum weekday {SUN, MON, TUE, WED, THR, FRI, SAT} today;
enum weekday day; //day is a variable of type weekday
enum weekday day; //day is a variable of type weekday
Declaring a Tagless Enumeration Variable
No type name specified
Syntax
enum {const-list} varName1...,varNamen;
Only variables specified as part of the enum declaration may be of that type. No type name is available to declare additional variables of the enum type later in the code.
1
enum {SUN, MON, TUE, WED, THR, FRI, SAT} today;
Using Enumeration Type Variable
If enumeration and variable have already been defined:
varName = labeln;
The labels may be used as any other symbolic constant. Variables defined as enumeration types must be used in conjunction with the type’s labels or equivalent integer.
Example
1
2
3
4
5
6
7
2
3
4
5
6
7
enum weekday {SUN, MON, TUE, WED, THR, FRI, SAT};
enum weekday day;
day = WED;
day = 6; //May only use values from 0 to 6
if (day == WED)
{ ...
enum weekday day;
day = WED;
day = 6; //May only use values from 0 to 6
if (day == WED)
{ ...