有关枚举我用例子来进行解释说明
一.
enum Sex//性别
{
MALE,
FEMALE,
SECRET
};
enum Color//颜色
{
RED,
GREEN,
BLUE
};
int main()
{
enum Sex s = MALE;
enum Color c = RED;
return 0;
}
个人理解:
enum Sex s =;后面只能跟 MALE,FEMALE,SECRET 防止自己出错。
同理:enum Color c。
二.
enum Color//颜色
{
RED,
GREEN,
BLUE
};
int main()
{
printf("%d %d %d ", RED, GREEN, BLUE);//0 1 2
return 0;
}
关于赋值:
一.int main 内不能赋值(即使令RED=0,也是错误的)。
二.在enum Color内赋值时,
1.令R=3时,G=4,B=5;
2.令G=3时,R=0,B=4;
三.枚举和#define
enum Color//颜色
{
RED,
GREEN,
BLUE
};
#define RED 0
#define GREEN
#define BLUE
这两段代码相同,但是枚举更好一点。
枚举的优点
为什么使用枚举?
我们可以使用 #define 定义常量,为什么非要使用枚举? 枚举的优点:
- 增加代码的可读性和可维护性
- 和#define定义的标识符比较枚举有类型检查,更加严谨。
- 防止了命名污染(封装)
- 便于调试
- 使用方便,一次可以定义多个常量
#define 使用起来不好,会有很多东西可以替代她,所以以后尽量少用。
枚举有很多优点,需要以后不断探索,才能找到她的好处。
四.枚举内存大小计算
enum Sex
{
MALE,
FEMALE,
SECRET
};
int main()
{
enum Sex s = MALE;
printf("%d\n", sizeof(s));//4
return 0;
}
原因:enum Sex s = (这里只能是一个值,即一个整形)
一般系统内定枚举的类型为 int
注:个人结合老师上课内容对结构体的认识,本人萌新可能有许多不正到之处,望周正。