首页 > 其他分享 >c语言自定义类型:枚举

c语言自定义类型:枚举

时间:2024-10-31 18:17:09浏览次数:3  
标签:case 语言 自定义 enum Sex 枚举 printf MALE

枚举类型的声明

例如:

    性别有:男生,女生

    月份有:十二个月

    三原色:也是可以一一列举

以上这些数据类型的表示就可以使用枚举

enum Day//星期 
{
	Mon,
	Tue,
	Wed,
	Thur,
	Fri,
	Sat,
	Sun
 };
 enum Sex//性别
 {
 	MALE,
 	FMALE,
 	SECRET
  };
enum Color//颜色
{
	RED,
	GREEN,
	BLUE
 };

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

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

例如:


 enum Sex
 {
 	//以下是枚举的三种取值
	 //他们都是常量,称为枚举常量 
 	MALE,
 	FMALE,
 	SECRET
  };
int main()
{
	enum Sex sex1 = MALE;//将MALE的值赋给sex1 
	enum Sex sex2 = FEMALE;
	return 0;
 } 

打印出枚举常量的值,显示就是从下标为0开始的,依次按照顺序进行排列


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

但是也可以用以下的定义方式改变他们的值

#include<Stdio.h>
 enum Sex
 {
 	MALE=3,
 	FEMALE,
 	SECRET
  };
int main()
{
	printf("%d\n",MALE);  //3
	printf("%d\n",FEMALE);//4
	printf("%d\n",SECRET);//5
	return 0;
 } //定义了第一个之后,会接着往下依次进行排列相加

如果是从中间进行定义的,那么第一个还是会从下标位0开始

#include<Stdio.h>
 enum Sex
 {
 	MALE,
 	FEMALE=3,
 	SECRET
  };
int main()
{
	printf("%d\n",MALE);  //0
	printf("%d\n",FEMALE);//3
	printf("%d\n",SECRET);//4
	return 0;
 } 

方便的是,枚举类型在主函数是不可以与整型进行赋值的,但是这个方法就可以对枚举常量进行赋值,然后再定义。

#include<Stdio.h>
 enum Sex
 {
 	MALE=5,
 	FEMALE=3,
 	SECRET
  };
int main()
{
	
	enum Sex sex1 = MALE;
	enum Sex sex2 = FEMALE;
	printf("%d\n",sex1);  //5
	printf("%d\n",sex2);  //3
	return 0;
 } 

枚举类型的优点:

为什么要使用枚举?

   我们可以是使用 #define 定义常量,为什么非要使用枚举?

枚举的优点:

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

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

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

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

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

枚举类型的使用

比如:完成整数的加减乘除。但是以下的代码,需要一一对应其数字以及一些计算的方式,可读性不高

void menu()
{
	printf("****************\n");
	printf("**1.Add**2.Sub**\n");
	printf("**3.Mul**4.Div**\n");
	printf("****************\n");
}
int main()
{
	int input = 0;
	do
	{
		menu();
		printf("请选择:");
		scanf("%d",&input);
		switch(input)//switch语句,进入所选的函数 
		{
			case 1:
				break;
			case 2:
				break;
			case 3:
				break;
			case 4:
				break;
			case 0:
				printf("退出:\n");
            default:
                printf("选择错误,请从新选择:\n");
		}	
	 } while(input);
	return 0;
 } 

所以就可以使用enum来增加代码的可读性

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("****************\n");
}
int main()
{
	int input = 0;
	do
	{
		menu();
		printf("请选择:");
		scanf("%d",&input);
		switch(input)//switch语句,进入所选的函数 
		{
			case ADD://完成的是加法操作,在调用加法函数 
				break;
			case SUB:
				break;
			case MUL:
				break;
			case DIV:
				break;
			case 0:
				printf("退出:\n");
			defult:
		    	printf("选择错误,从新选择\n") ;
			    break;
		}	
	 } while(input);
	return 0;
 } 

标签:case,语言,自定义,enum,Sex,枚举,printf,MALE
From: https://blog.csdn.net/2401_83201682/article/details/143354824

相关文章

  • c语言:动态内存管理中的malloc和free,calloc和realloc
    为什么要有动态内存分配?通过之前的学习,我们已经掌握的内存开辟方式有:inta=20;//在栈空间上开辟四个字节chararr[10]={0};//在栈空间上开辟10个字节的连续空间上述空间的开辟的大小是固定的数组在申明的时候,必须指定数组的长度,数组空间一旦确定了大小不能进行调整。......
  • 鹏哥C语言初识课程总结
    常见单位和数据类型的范围bitbytekbmbgbtbpb#include<stdio.h>intmain(){ printf("%d\n",sizeof(char));//12^8==1024 printf("%d\n",sizeof(int));//42^32==4294967296//-2,147,483,648到2,147,483,647。10位数 printf("%d\n&......
  • C语言和Julia在数据分析和科学计算上的区别
    ###开头段落在比较C语言和Julia在数据分析和科学计算上的差异时,主要区别体现在执行效率、易用性、生态系统、以及并行计算能力。C语言以其高度的执行效率和广泛的应用背景著称,被广泛用于系统编程和性能敏感的应用。相对而言,Julia设计之初就致力于科学计算和数据分析,提供了易用......
  • 嵌入式课程day04-C语言运算符和选择结构
    2.3运算符2.3.1运算符介绍运算符:具有一定运算规则的符号。操作数:运算符的操作对象。~a   ---a就是~运算符的操作数。---单目运算符:运算符只有一个操作数3+5---35就是+运算符的操作数。---双目运算符:运算符有2个操作数    表达式1?表达式2:表达......
  • 重温c语言之,7天开整,就是随便的写写,第一天
    一:转义字符\t是一个字符,在printf里面,只占一个位置;其他什么的抽象字符,用一个'\'+抽象字符就可以出现;\ddd这个是8进制的,可以转成10进制的,之后参考ASCLL码表即可二:枚举类型的函数与数组一样,有下标,都是从0开始的三:数组可以先不在【】这里面填写多少,但是需......
  • 大学 C 语言在线 PTA 平台编译提示警告未使用 scanf 返回值的问题
    最近在知乎发现有不少大学生在使用PTA平台在线编写C语言代码,编译时提示警告未使用scanf返回值的问题。具体现象是编译器输出显示为类似于这样的提示。a.c:Infunction‘main’:a.c:9:5:warning:ignoringreturnvalueof‘scanf’declaredwithattribute‘warn_u......
  • 【升华】自然语言处理架构
       自然语言处理(NaturalLanguageProcessing,NLP)是指让计算机接受用户自然语言形式的输入,并在内部通过人类所定义的算法进行加工、计算等系列操作,以模拟人类对自然语言的理解,并返回用户所期望的结果。自然语言处理的目的在于用计算机代替人工来处理大规模的自然语言信息......
  • Python数据类型之自定义类型——Class与面向对象编程详解
    目录引言一、面向对象编程基础二、类的定义与对象的创建三、封装性四、继承性五、多态性六、特殊方法与数据类七、使用dataclass装饰器八、面向对象编程的优势结论引言Python是一门功能强大的编程语言,其面向对象编程(OOP)的特性更是为开发者提供了极大的灵活性和......
  • Go 语言 -make函数
    在Go语言中,make是一个内置函数,专门用于分配和初始化slice(切片)、map(映射)和channel(通道)三种数据类型。**make函数不会返回一个指针,而是返回初始化后的数据结构本身的引用**。make函数的用途make的主要作用是为这些引用类型的数据结构分配内存并进行初始化,而不是像new......
  • Go 语言的Channel
    在Go语言中,Channel是一种用于在多个Goroutine之间传递数据的通信机制。Channel提供了类型安全、同步的数据传输方式,使Goroutine可以相互通信而无需使用锁。1.Channel的定义与声明在Go中,可以使用make函数创建Channel,并指定Channel中传输的数据类型:ch:=make(......