C语言——枚举类型

📝前言:

在之前的文章中我们已经讲解了自定义类型中的结构体类型和联合体类型,现在我们再充分学习一下C语言中的枚举类型:
1,什么是枚举类型
2,枚举类型的定义和变量的声明
3,对变量进行赋值

🎬个人简介:努力学习ing

📋个人专栏:C语言入门基础

🎀CSDN主页 愚润求学

🌄每日鸡汤:新的一年,祝大家:龙年行大运


文章目录

一,什么是枚举类型

简单来说,枚举类型就是可以让我们给整数值分配有意义的名字,从而使得代码更易读、易维护

二,枚举类型的定义和变量的声明

1,如何定义和声明

枚举类型的定义和变量的声明方式也与结构体和联合体相似

(一)枚举类型的定义👇🏻

c 复制代码
enum  枚举名
{
     成员项表列
};

(二)枚举变量的声明👇🏻

c 复制代码
enum 枚举名 变量名

举例:我们定义一个代表颜色的枚举类型,然后创建一个枚举变量a 👇🏻

c 复制代码
enum color
{
	red=1,
	yellow=2,
	blue=3
};
int main()
{
	enum color a;
	return 0;
}

这个 {} 里面的变量red yellow blue都有其对应的特定的,不变的整数,所以这些变量也被叫做枚举常量。

当我们引用这些变量的时候,就会输出他们所代表的值,如👇🏻

c 复制代码
#include<stdio.h>
enum color
{
	red=1,
	yellow=2,
	blue=3
};
int main()
{
	printf("%d\n", red);
	printf("%d\n", yellow);
	printf("%d\n", blue);
	return 0;
}

输出结果:

2,关于枚举类型中成员的赋值

如果我们在创建枚举变量时,为未给成员进行初始化赋值,则C语言会自动赋值

遵循:默认从0开始,依次增1

如果只有前几个值,那么后面未被赋值的成员也会被自动赋值,遵循依次增1

例子一(不赋值)👇🏻

例子二(讲将第一个成员赋值为3,后面的不赋值)👇🏻

注意:一旦枚举类型的成员被赋值后,则变成枚举常量,不能再被修改!

3,命名注意事项

同一个程序中不能定义同名的枚举类型;不同的枚举类型中,也不能存在同名的枚举成员。

以下是错误示范:

(一)定义了同名的枚举类型👇🏻

c 复制代码
enum color
{
	red,
	yellow,
	blue
};
enum color
{
	green,
	black,
	white
};

(二)存在同名的枚举成员👇🏻

c 复制代码
enum color1
{
	red,
	yellow,
	blue
};
enum color2
{
	red,
	black,
	white
};

三,对变量进行赋值

1,使用成员赋值

⭐C语言中的枚举变量通常只能被赋值为枚举类型中定义的成员。

例如,我们给下面的枚举变量a b c赋值👇🏻

【只能使用成员red yellow blue】

c 复制代码
#include<stdio.h>
enum color
{
	red = 1,
	yellow = 2,
	blue = 3
};
int main()
{
	enum color a, b, c;
	a = red;
	b = yellow;
	c = blue;
	return 0;
}

2,强制类型转化,再赋值

如果我们非要给枚举类型的变量赋整数值,则对枚举型的变量赋整数值时,需要进行类型转换

c 复制代码
#include<stdio.h>
enum color
{
	red = 1,
	yellow = 2,
	blue = 3
};
int main()
{
	enum color c;
	c = (enum color)10;  //强制类型转换
	printf("%d\n", c);
	return 0;
}

输出结果:


🌈我的分享也就到此结束啦🌈

要是我的分享也能对你的学习起到帮助,那简直是太酷啦!

若有不足,还请大家多多指正,我们一起学习交流!

📢公主,王子:点赞👍→收藏⭐→关注🔍

感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

相关推荐
weixin_460443561 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
Cc.Y5 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
启观川5 小时前
数据结构与算法 -第 3 章 常用算法-动态规划
数据结构·笔记·python·算法
阿森_dev5 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
by209995 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态
笔墨登场说说5 小时前
flink bin/start-cluster.sh 帮我做成开机启动
开发语言·python
Sarvartha5 小时前
Lambda 表达式和函数式接口
java·开发语言
小白学大数据5 小时前
拼多多反爬对抗实战:Scrapy 中间件化采集架构解析
开发语言·scrapy·中间件·架构
一木 之林5 小时前
Dify学习笔记 01 · 平台入门与实战:部署、五类应用、RAG与MCP(第1-16集)
人工智能·笔记·学习·计算机视觉
迪康Defender5 小时前
终端安全审批体系设计:如何平衡安全管控与业务连续性
运维·服务器·安全·运维开发·学习方法·业界资讯·远程工作