>>87
enum は 整数値。
char や int で宣言しないのは、変数の意図をわかりやすくするためじゃないですかね。
コンパイラや設定によってはワーニングを出してくれるのかな?

ここに書かれている範囲だったら、いきなりstateにgetchar()値を入れても問題はなさそう。
でも、あとあとwhile(1){}の中に書き込んでいく意図があるとしたら、
その中でプログラムのステートを管理するstateはgetchar()でいきなりいじるのはしたくないはず。
getchar()は習慣的にいったんinput1みたいな変数に入れているのでは。