我们可以看到这里并没有报错,但是我们把文件后缀改为cpp再试试
因为我们赋的数字其实是整形类型,而变量是枚举类型,因为c语言要求没那么严格,但是换成c++后要求严格了就会报错
当然在声明枚举类型的时候是可以赋初值的
enum Color//颜⾊ { RED = 2, GREEN = 4, BLUE = 8 };
扩展
不知道各位有没有想过枚举常量的内存大小是多少?
我们在之前又说过枚举常量括号中的类型默认从0开始,依次递增1
每次对枚举变量进行赋值也只有括号中的那几种可能中的其中一种,因此枚举变量只代表着括号中的一个成员
括号中的成员取值既然是从0开始,依次增加1,说明这些数字的大小和括号中成员的大小是一样的,那我们就可以大胆推测这些数字的大小是4个字节,也就是整形类型的大小.
枚举类型的优点
我们可以使用 #define 定义常量,为什么非要使用枚举?
(因为#define 会直接将标识号给替换)
我们举个例子
这里会报错,原因就是我们将里面的成员直接替换成了数字
枚举的优点
- 增加代码的可读性和可维护性
- 枚举与#define定义的标识符(没有类型)比较枚举有类型检查,更加严谨
- 便于调试,预处理阶段会删除 #define 定义的符号
- 使用方便,一次可以定义多个常量
- 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用