个人理解
enum 的价值主要在给某个(主要是)整数一个名字,让这个值自己解释自己。我说令 0 表示红色, 1 表示绿色, 2 表示蓝色,不如定义一个枚举类型,让红色就是 Red ,绿色就是 Green ,蓝色就是 Blue ,既方便阅读还避免了自己排列数值可能出现的错误(不小心排了两个 1 之类)。
至于归类的效果, C 还会弱一些因为没有严格保证,和整数之间可以随意隐式转换。 C++ 的 enum class 则强化了限制,禁止不同枚举类型的枚举值之间和到整数之间的隐式转换,可以避免一些隐蔽的错误,算是一种语法盐。
C 的枚举类型还有一个小 hack ,因为枚举值是编译期常量,当不想用 define 预处理的时候可以用 enum 来指定数组长度