不能用cin对枚举类型进行输入,但scanf可以
这是因为,
在C里面,enum类型其实就是int型
在C++里,比如定义enum sex{man,woman};
man 和woman是这个枚举的成员
而对于sex类型的变量只能使用这个集合中的元素来初始化,也就是说虽然man实际代表0,woman代表1,但在sex s 定义中,你不能写s = 0或s = 1, 而只能写s = man, s = woman
typedef enum { man, woman } sex;
sex s;
s = man; //正确
s=0; //错误
所以对于cin>>s, 根本没有合适输入类型,肯定会发生错误的
另外,也不能用int类型给枚举类型变量赋值,如
typedef enum { man, woman } sex;
sex s;
int a;
cin >> a;
s = a;