Question:
enum Foo { first = 10, second = 20 };Foo foo;
What does the standard say about the default value of foo, is it the value of the first defined enumeration (in this case 10), is it zero or is it undefined?
Answer:
Assuming foo is a local automatic instance of Foo, its initial value is indeterminate, just as with any other local automatic variable of a built-in type. Note that if foo were a local static or global variable, its default value would be set to zero, which doesn’t even have an equivalent enumerator value. To conclude, using an uninitialized enum variable is never recommended.