枚举学不懂,小代老师带你深入理解枚举

枚举学不懂,小代老师带你深入理解枚举

1 枚举类型1.1枚举声明枚举类型的声明

枚举顾名思义就是⼀⼀列举。

把可能的取值⼀⼀列举。

⽐如我们现实⽣活中:

⼀周的星期⼀到星期⽇是有限的7天,可以⼀⼀列举

性别有:男、⼥、保密,也可以⼀⼀列举

⽉份有12个⽉,也可以⼀⼀列举

三原⾊,也是可以意义列举

这些数据的表⽰就可以使⽤枚举了。

枚举的关键词:enum

代码语言:javascript代码运行次数:0运行复制enum Day//星期

{

Mon,

Tues,

Wed,

Thur,

Fri,

Sat,

Sun

};

enum Sex//性别

{

MALE,

FEMALE,

SECRET

};

enum Color//颜⾊

{

RED,

GREEN,

BLUE

};以上定义的 enum Day , enum Sex , enum Color 都是枚举类型。

{}中的内容是枚举类型的可能取值,也叫 枚举常量 。

这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。

代码语言:javascript代码运行次数:0运行复制enum Color//颜⾊

{

//他们是枚举常量,被称为枚举常量,在第一次赋值时候可以给初始值,之后常量不能被改变

RED=2,

GREEN=4,

BLUE=8

};代码语言:javascript代码运行次数:0运行复制int main()

{

enum un

{

add,

sub,

mul,

div,

};

enum un n1 = mul;

printf("%d",div);

printf("%d",n1);

return 0;

}我们可以直接用枚举里面的值也可以把枚举里面的值赋予给变量。

1.2 枚举类型的优点为什么使⽤枚举?

我们可以使⽤ #define 定义常量,为什么⾮要使⽤枚举?

枚举的优点:

1. 增加代码的可读性和可维护性

2. 和#define定义的标识符⽐较枚举有类型检查,更加严谨。

3. 便于调试,预处理阶段会删除 #define 定义的符号

4. 使⽤⽅便,⼀次可以定义多个常量

5. 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤

第5条如上图:枚举如果是局部变量只能在局部使用。

2.3 枚举类型的使⽤1 enum Color//颜⾊

2 {

3 RED=1,

4 GREEN=2,

5 BLUE=4

6 };

7

8 enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值

那是否可以拿整数给枚举变量赋值呢?在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐

较严格。

代码语言:javascript代码运行次数:0运行复制#include

int add1(int x, int y)

{

return x + y;

}

int sub1(int x, int y)

{

return x - y;

}int mul1(int x, int y)

{

return x * y;

}int div1(int x, int y)

{

return x / y;

}

void meun()

{

printf("********************\n");

printf("*** 1 add*** 2 sub****\n");

printf("*** 3 mul*** 4div****\n");

printf("*** 0 exit ****\n");

printf("********************\n");

}

int main()

{

enum un

{

exit,

add,

sub,

mul,

div,

};

int x = 0;

int y = 0;

int input = 0;

int ret = 0;

do

{

meun();

printf("请选择:");

scanf("%d", &input);

switch (input)

{

case add:

printf("请输入两个数:");

scanf("%d %d",& x,& y);

ret=add1(x, y);

printf("%d", ret);

break;

case sub:

printf("请输入两个数:");

scanf("%d %d", &x,& y);

ret = sub1(x, y);

printf("%d", ret);

break;

case mul:

printf("请输入两个数:");

scanf("%d %d", &x,& y);

ret = mul1(x, y);

printf("%d", ret);

break;

case div:

printf("请输入两个数:");

scanf("%d %d",& x,& y);

ret = div1(x, y);

printf("%d", ret);

break;

case 0:printf("退出计算器"); break;

default: printf("输入错误,请重新输入");break;

}

} while (input);

}这里可以提高程序的可读性。

相关推荐

如何创建PDF文件?创建PDF文件的步骤是什么?
365买球官网入口

如何创建PDF文件?创建PDF文件的步骤是什么?

📅 07-20 👁️ 9141
微博上可以发布哪些类型的内容? ➡️
365买球官网入口

微博上可以发布哪些类型的内容? ➡️

📅 08-05 👁️ 2419
168美元等于多少人民币?
365买球官网入口

168美元等于多少人民币?

📅 06-29 👁️ 1667
冰箱都能放什么东西?
365bet网站

冰箱都能放什么东西?

📅 08-06 👁️ 4848
《王者荣耀》怎么跳过新手教程
365买球官网入口

《王者荣耀》怎么跳过新手教程

📅 08-01 👁️ 3326
90后“蚝老板”的电商创业路:陈志文如何用直播带火湛江生蚝
英格兰新球衣字体泄露:字形修长而棱角分明,灵感来自1996
中国十大马术俱乐部 国内骑马场哪家好 中国十大马场
365买球官网入口

中国十大马术俱乐部 国内骑马场哪家好 中国十大马场

📅 07-03 👁️ 4648
内存卡检测工具 2.50 最新版
365bet网站

内存卡检测工具 2.50 最新版

📅 07-02 👁️ 5083