C\C++ enum枚举类型
一
、枚举类型
C/C++语言可以使用#define和const创建符号常量,而枚举不仅可以创建符号常量,还可以创建新的数据类型。它是由自己定义若干个枚举常量的集合,属于派生类型。“枚举”一词顾名思义就是将可能出现的情况一一列举出来。打简单比方,人类按肤色只分为三种:黄种人、白种人、黑种人不会再有其它肤色人种,也就是说一个变量仅只有几种情况,那么我们可以定义枚举类型。
二、如果使用枚举
2.1 由于枚举规则比较多,与代码加注释来进行学习可能更方便
#include "stdafx.h" int main() { // 1) 声明 e_human 为新的类型,称作枚举 // 2) 声明 yellow,white,black 枚举量. 默认值0-2 enum e_human {yellow, white, black}; // 4) 声明 e_human 类型的变量,就像声明基本类型 int 变量一样,例:int number; e_human person; // 5) 赋值上与基本类型不一样,不进行强转情况下,只能赋值定义的枚举量 person = yellow; // 6) 可以将枚举量赋值给非枚举变量 int i_yellow = yellow; // 7) 枚举量不能进行算术运算,如 person++ 是不允许的. 违反类型限制,失去枚举类型的初衷 // person++; // [错误] // 8) 枚举量可以参加与其他类型变量的运算,编译器自动将枚举量转换为int类型 int i; i = person + 1; // 9)如果只打算使用枚举量而不去创建枚举类型变量,则可以省略枚举类型的名称 enum {yellow, white, black}; // 10) 显示赋值枚举量,指定的值必须是整数 enum e_human_two {yellow = 1, white = 100, black = 3}; // 11) 可全部赋值,也可部分赋值. yellow 默认情况为 0,white = 100,因此 black 为 101 enum e_human_two { yellow, white = 100, black }; // 12) 与5)等同.书中说道获取取值上限,知道枚举量最大值方法为:找到大于这个的最大值、最小值的2的幂减一 person = e_human(2);// 赋位于枚举定义的取值范围,超出范围则结果无意义 return 0; }