枚举
优点:
定义出来是【常量】,可以定义多个,赋值会递推,比较方便
限定取值范围,只能取哪几种,赋值别的会报错。
枚举常量隐含类型都是整数,且最大值有限,不能表示浮点数
和宏的区别:
宏定义只能一次一个
枚举都是整型
枚举会有参数检查,取值范围在定义后就已经确定
宏定义是预编译阶段处理的,枚举是在编译的时候确定的
编译器可以调试枚举常量,但是宏定义不能调试
宏定义和const:
宏没有类型,不会做类型检查
define本身不占内存,用到才占,const常量会在内存中分配空间
若存在多个变量赋值(i = PI),宏定义每次都会分配内存,const相当于是字符串,所有变量都指向同一个地址。
一般编译器会把const放在符号表里,效率比较高