> Each enumerated type shall be compatible with char, a signed integer type, or an
> unsigned integer type. The choice of type is implementation-defined,108) but shall be
> capable of representing the values of all the members of the enumeration.

意訳) enum の型は処理系定義だよ、ただしメンバの値はすべて表現できなければならない

なので、メンバに負の値がなければ、処理系によっては unsigned を選ぶかもしれない
unsigned になった場合は e = -1 は e = (unsigned) -1 のことだから、
なんというか、まぁ、仕方ないんじゃないか