Enum Variables

Enumeration (enum): An enum is a user-defined type consisting of a set of named constants called enumerators. 
For e.g.the colors of the rainbow would be mapped like this 

         enum rainbowcolors
         {
           Red, 
                      Orange, 
                      Yellow, 
                      Green, 
                      Blue, 
                      Indigo, 
                      Violet 
         }; 

Now internally, the compiler will use an int to hold these and if no values are supplied, red will be 0, orange is 1 etc. It maintains a table containing data, mapped with an integer associated with it.

Enumerators are stored by compiler as an integers: by default, first enumerator is 0, next enumerator value is previous enumerator value + 1.


You aren't stuck with these compilers generated values; you can assign your own integer constant to them as shown here.

         enum rainbowcolors
         { 
                       Red=1, 
                       Orange=2, 
                       Yellow=3, 
                       Green=4, 
                       Blue =8, 
                       Indigo =8, 
                       Violet =16
         } ; 

Having blue and indigo with the same value isn't a mistake as enumerators might include synonyms such as scarlet and crimson.


Enum Declaration:           
 In C, the variable declaration must be preceded by the word enum as in 
                     enum rainbowcolors trafficlights= red; 

C++ has enumeration types that are directly inherited from C's and work mostly like these, except that an enumeration is a real type in C++, giving additional compile-time checking. Also (as with structs) the C++ "enum" keyword is automatically combined with a "typedef", so that instead of calling the type "enum name", one simply calls it "name."
This can be simulated in C using a typedef: "typedef enum {TYPE1, TYPE2} name;"

Advantages: 

  • They restrict the values that the enum variable can take. 
  • They force you to think about all the possible values that the enum can take. 
  • They are a constant rather than a number, increasing readability of the sourcecode. 

No comments:

Post a Comment