枚举类型及定义新的类型名字(enum&typedef)
-
枚举类型也是一种自定义类型,一个变量只有几种可能的值
-
声明:
enum ESex { ESex_Male, //男性 ESex_FMale //女性 }; //以上就是定义了一个枚举类型 ESex,大括号内部的 ESex_Male、ESex_FMale 称为枚举元素或枚举常量,表示这个枚举类型可能的值。
#if1
注意事项:
-
枚举元素是常量,故又称枚举常量,不可被赋值
-
默认第一个枚举常量值为 0 ,之后的元素依次 +1 ,如:0,1,2,3, …
-
可在声明时,指定枚举常量的的值,如下:
enum EWeekDay { EWeekDay_1 = 3, EWeekDay_2 = 4, EWeekDay_3 = 5, EWeekDay_4, EWeekDay_5, EWeekDay_6, EWeekDay_7 }; // 以“EWeekDay_3 = 5;”为基准,以后的枚举常量依次 +1 ,如:6,7,8,9
-
枚举类型可用来跟整数一样判断,比较,switch-case等操作,例如:
int a = 2; if(EWeekDay_1 > a) { … }
-
虽然枚举类型变量可以看做是整型类型的变量,但是不能将普通的整数赋值给枚举类型变量,如下:
EWeekDay day_1 = 1; //Error EWeekDay day_2 = EWeekDay (2); //No errors,but no meaning EWeekDay Day_3 = EWeekDay_3; //最好的操作
#endif
-
枚举类型与结构体类型结合:
struct Student { string name; int num; ESex sex; int age; }; Student stu; stu.sex = ESex_Male;
-
typedef声明新的类型名字:
- typedef 可以声明一个新的类型名字来代替已有的类型名,注意是新的类型名字,只是名字而已,不是一种全新的类型,只是改个名字而已,如:
unsigned int score = 98; typedef unsigned int uint; uint score = 98; //与第一句作用完全相同