首页 > 其他分享 >C语言自定义类型变量——枚举(enum)

C语言自定义类型变量——枚举(enum)

时间:2024-04-06 12:59:43浏览次数:24  
标签:常量 自定义 enum C语言 枚举 printf RED define

一.枚举的定义和声明

字面意思,枚举就是一一列举,把可能的取值一一列举,在我们现实生活中有许多可以列举的事物,例如:一周七天,一年四季,性别,月份,三原色等等。当我们需要描述这些数据的时候就可以使用枚举了。其关键字为eunm.

类似于结构体,联合体,定义一个枚举类型的基本形式如下:

enum 枚举名

{

        枚举常量1,

        枚举常量2,

        //...

        枚举常量n
};

 例如:枚举一星期七天

enum Day//星期
{
	Mon,
	Tues,
	Wed,
	Thur,
	Fri,
	Sat,
	Sun
};

以上定义的 enum Day 就是一种枚举类型。 { }中的内容是枚举类型的可能取值,也叫枚举常量 。这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也是可以赋初值的。(后面的值也是顺次加1的)

enum Color
{
	RED,//0
	GREEN,//1
	BLUE//2
};
	
int main()
{
	//enum Color cl = RED;
	//RED=5//err
	printf("%d\n", RED);
	printf("%d\n", GREEN);
	printf("%d\n", BLUE);
	return 0;
}

注意:对于enum中的枚举常量在使用的时候是不可以再次赋值的,因为它是一个常量值 ,只能在初始化的时候修改默认值。

二.枚举类型的优点

通过枚举的定义我们会发现它与#define效果很类似,那我们为什么非要使用枚举?

枚举的优点:

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

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

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

4. 使用方便,⼀次可以定义多个常量

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

#define相对来说更加简单粗暴,就是将所有的符号替换为设定值,并且作用域是全局的,而对于枚举变量中的枚举常量,编译器会将它视作一种变量类型,更加严谨,并且只能在函数内部使用,作用范围更精确。我简单举两个案例直观感受一下enum的好处与用途:

eg1:枚举的类型检查

enum Color//颜⾊
{
 RED=1,
 GREEN=2,
 BLUE=4
};
enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值
enum Color clr = 2//err(c++中)

eg2: 枚举的可读性

下面是一个简易计算器实现,其中使用enum会将数字替换成名称,增加代码可读性,更加直观。

void menu()
{
	printf("**************************************");
	printf("******1.Add      2.Sub****************");
	printf("******3.Mul      4.Div****************");
	printf("***********0.Exit*********************");
	printf("**************************************");
}

eunm
{
	Exit,//0
	Add,//1
	Sub,//2
	Mul,//3
	Div//4
}
int main()
{
	int input = 0;
	printf("请输入->");
	scanf("%d", &input);
	switch (input)
	{
	case Add://1
			//Add();
			break;
	case Sub://2
			//Sub();
			break;
	case Mul://3
			//Mul();
			break;
	case Div://4
			//Dix();
			break;
	case Exit://0
			//Exit()
			break;
	default:
				break;
	}
	return 0;
}

eg3:枚举一次性定义多个变量,相较于#define更加简洁明了。

enum Color
{
	RED=,//0
	GREEN,//1
	BLUE//2
};

#define RED 0
#define GREEN 0
#define BLUE 0

以上便是对C语言自定义类型变量的最后一种——枚举的简要介绍,望屏幕前的你能有所收获! 

 

标签:常量,自定义,enum,C语言,枚举,printf,RED,define
From: https://blog.csdn.net/2301_80827065/article/details/137425099

相关文章

  • C语言自定义类型变量——联合体(union)
    前言:在之前的文章中我们介绍了C语言中自定义类型变量之一的结构体,本篇我们将介绍它的兄弟姐妹之一的联合体类型,何为联合体?如何声明?有什么特点?让我们一起揭开它神秘的面纱 一.何为联合体 ?1.1联合体我们知道,创建变量的过程本质上是在内存中为变量开辟一片内存空间的过程,......
  • Vue.js自定义指令
    除了默认设置的核心指令(v-model和v-show),Vue也允许注册自定义指令。下面我们注册一个全局指令v-focus,该指令的功能是在页面加载时,元素获得焦点:<body><divclass="app"><span>页面载入时,input元素自动获取焦点:</span><inputv-focust......
  • 【C语言初阶】指针运算
    【C语言初阶】指针运算文章目录【C语言初阶】指针运算四、指针运算1介绍2指针+-整数2.1示例3指针-指针3.1示例3.2模拟实现`strlen()`3.2.1方法一:指针-指针3.2.2方法二:计数器3.2.3方法三:函数递归4指针的关系运算4.1示例14.2示例24.3标准规定总......
  • 【C语言初阶】指针
    【C语言初阶】指针文章目录【C语言初阶】指针一、指针是什么?1指针是什么?2内存2指针变量2.1示例2.2总结3如何编址?3.1编址3.1总结二、指针和指针类型1指针的类型1.1示例2指针+-整数2.1示例2.2总结3指针的解引用3.1示例3.2总结总结:本章目标:......
  • 中国电子学会(CEIT)2021年09月真题C语言软件编程等级考试三级(含详细解析答案)
    中国电子学会(CEIT)考评中心历届真题(含解析答案)C语言软件编程等级考试三级2021年09月编程题五道 总分:100分一、菲波那契数列(20分)菲波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求菲波那契数列中第a......
  • 【华为OD机试真题】211、最优资源分配、芯片资源占用 | 机试真题+思路参考+代码分析(C
    文章目录一、题目......
  • C语言简易版杀戮尖塔
    此代码仅包含4种卡牌(可增加其它id的卡牌效果函数)此项目仅有一个固定攻击模式的boss。以下是实现代码,#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>intdeck[10]={1,1,1,1,2,2,2,2,3,4};inthand[5]={0};......
  • 【c语言】自定义类型:联合体(公用体)【详解】
    联合体联合体类型的声明像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共用体。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。......
  • IfcAlarmTypeEnum
    IfcAlarmTypeEnum类型定义IfcAlarmTypeEnum定义了可以指定的不同类型报警的范围。IFC2x2中的新枚举。 EnumerationdefinitionConstantDescriptionBELLAnaudiblealarm.BREAKGLASSBUTTONAnalarmactivationmechanisminwhichaprotectiveglasshastobebro......
  • c语言之多重指针
    多重指针是定义了一个指针a后,又定义一个指针b引用指针a的地址,就叫多重指针多重指针定义的方法:类型名**指针名#include<stdio.h>intmain(){ inta; a=3; int*p=&a; int**y=&p; printf("%d\n",a); printf("%d\n",*p); printf("%d\n",**y); return0;}上面代码......