An enumeration is defined using the enum keyword, followed by an optional enumeration name, and a comma-separated list of enumerators enclosed in braces. By default, the first element is assigned the value zero. Each subsequent enumerator is assigned a value one greater than the value of the enumerator that immediately precedes it.
Each enum defines a new type. As with any type, we can define and initialize objects of enumeration type and can use those objects in various ways. An object enumeration type may be initialized or assigned only by one of its enumerators or by another object of the same enumeration type.