不常见的小知识-枚举

举报
芒果_Mango 发表于 2022/03/28 10:22:42 2022/03/28
884 0 0
【摘要】 枚举枚举 -> 列举,把所有可能的取值->列举enum Sex //性别{ MALE, FEMALE, SECRET //SECRET, };注意:1.成员后面不是跟分号 是跟逗号,最后一个成员后面可以跟逗号,也可以省略不写,2.{}的最后面加分号3.enum Sex这一整个是枚举类型 不要漏了前面的enum这些可能取值都是有值的,默认从0开始,一次递增1,当然在定...

枚举

枚举 -> 列举,把所有可能的取值->列举

enum Sex	//性别
{
    MALE,
    FEMALE,
    SECRET
    //SECRET, 
};

注意:

1.成员后面不是跟分号 是跟逗号,最后一个成员后面可以跟逗号,也可以省略不写

2.{}的最后面加分号

3.enum Sex这一整个是枚举类型 不要漏了前面的enum


这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初始值

enum Sex	//性别
{
    MALE,
    FEMALE,
    SECRET
    //SECRET, 
};
int main()
{
    printf("%d\n", MALE);  //0
    printf("%d\n", FEMALE);//1
    printf("%d\n", SECRET);//2
    return 0;
}

enum Sex	//性别
{
    MALE = 2,
    FEMALE,
    SECRET = 6
    //SECRET, 
};
int main()
{
    printf("%d\n", MALE);  //2
    printf("%d\n", FEMALE);//3	每次递增1
    printf("%d\n", SECRET);//6
    return 0;
}

注意:赋初始值时,后面跟的也是逗号 不是分号!!!同样,最后一个成员赋初始值可以不加逗号


枚举与整形

enum Color c = 4;

这个表达式是有问题的,c为枚举类型,4为整形,二者类型不匹配

image-20220310222957991


最好给枚举变量附枚举的可能取值

enum Color c = GREEN;

枚举类型的变量的值是整形,大小是4byte


枚举的应用

enum Color
{
    RED = 2,
    GREEN = 4,
    BLUE = 8
};
int main()
{
    enum Color c = GREEN;
    if(c == GREEN)
    {
        printf("绿色\n");
    }
    return 0;
}

使用枚举设置简易计算器

enum Option
{
	EXIT,	//0
	ADD,	//1
	SUB,	//2
	MUL,	//3
	DIV		//4
};
void menu()
{
	printf("******************************\n");
	printf("****	1.add	2.sub	  ****\n");
	printf("****    3.mul	4.div	  ****\n");
	printf("****	0.exit		  ****\n");
	printf("******************************\n");
}
int main()
{
	int input = 0;
	do
	{
		menu();
		printf("请输入你的选择->");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			break;
		case SUB:
			break;
		case MUL:
			break;
		case DIV:
			break;
		case EXIT:
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}
	} while (input);
	return 0;
}

如果case内写1,2,3,4还要看1,2,3,4代表什么运算,但是如果用枚举就很直观


枚举的优点

我们可以使用#define 定义常量,为什么使用枚举,枚举的优点是什么

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

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

  • 3.防止命名污染(封装)

  • 4.便于调试

    image-20220310223010126

  • 5.使用方便,一次可以定义多个常量

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。