C\C++ enum枚举类型

时间:2021-11-09 02:10:15
C\C++ enum枚举类型
、枚举类型
C/C++语言可以使用#defineconst创建符号常量,而枚举不仅可以创建符号常量,还可以创建新的数据类型。它是由自己定义若干个枚举常量的集合,属于派生类型。“枚举”一词顾名思义就是将可能出现的情况一一列举出来。打简单比方,人类按肤色只分为三种:黄种人、白种人、黑种人不会再有其它肤色人种,也就是说一个变量仅只有几种情况,那么我们可以定义枚举类型。

、如果使用枚举
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;
}