>>387
主な理由はCとC++の仕様の違いかな。

Cでは列挙型はintと同サイズと決まっているが、
C++では一番大きい値を表現できる整数型となっている。
ようするに、8bitで表現できる範囲しか使ってなければ、
sizeof(列挙型)==1になってしまう。(Cでは4)