enumって実はintと変わらないってのは、Cの規格としてはなんとかして
ほしかったよなあ。

enum Boolean { false, true } hoge;
とやっておくと、hogeはfalseかtrueしか取ることができないと思いきや、
この後で hoge = 100; とかやってもエラーにならないんだよね。
キャストしないと代入できないくらいの制限を付けてもよかったと
思うんだけど。