It is implementation-defined which size an enumeration will have. Usually they have size equal to sizeof( int ) because in C enumerators have type int. Though even in C enumerations themselves have implementation defined compatible type. From the C Standard
Each enumerated type shall be compatible with char, a signed integer type, or an unsigned integer type. The choice of type is implementation-defined
In C++ an enumeration has the size of the underlying type. You can make it fixed specifying enum-base or using of a scoped enumeration that has underlying type int if not specified otherwise.