enum の型は基本intと同じ扱い

ただし、
intの範囲を越えたらより大きな型になる

コンパイラやコンパイラの設定によっては
charから拡張していく物もある
また、型を指定出来る物もある
詳細はコンパイラの仕様書を見て

enumはenumとして別の値に直接キャストしない
特定の値、特定のサイズを仮定しない
のが本来だけど
効率を考えるとそんな正論ばかりは言ってられない

単なる値の#defineの代わりにenumを使うこともある