枚举的简单介绍

目录

概念:

枚举的声明:

枚举的使用:

枚举的取值:

枚举的优点:

#define的功能:

而与#define对比,枚举的优点有:


概念:

枚举顾名思义就是⼀⼀列举。 把可能的取值⼀⼀列举。

⽐如我们现实⽣活中:

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

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

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

三原⾊,也是可以一一列举

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

枚举的声明:

复制代码
enum Day//星期
{
 Mon,
 Tues,
 Wed,
 Thur,
 Fri,
 Sat,
 Sun
};
  • enum 表示枚举的关键字,不可更改。
  • Day 表示枚举的名字,或者说枚举的标签,可以更改。
  • { }花括号内的是枚举常量,没有数据类型的修饰,枚举常量就是常量。

注意:枚举常量是用逗号隔开的,最后一个枚举常量不写逗号,这和数组的写法一样,数组:arr[]={1,2,3,4,5};

枚举的使用:

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

int main()
{
  enum Day d = Fri;
  return 0;
}

枚举的用法,d就表示为枚举变量,并给d赋值,赋值为Fri 此时d就i代表着该枚举中的Fri

并且枚举声明只是一种类型没法再内存中开辟空间,只有在创建该枚举类型的变量并赋值时才算开辟了空间。

枚举的取值:

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

int main()
{
 printf("%d\n",Mon);
 printf("%d\n", Tues);
 printf("%d\n", Wed);
  return 0;
}

输出结果:

由此得知,枚举常量都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。

复制代码
enum Day//星期
{
 Mon = 1,
 Tues,
 Wed,
 Thur,
 Fri,
 Sat,
 Sun
};

int main()
{
 printf("%d\n",Mon);
 printf("%d\n", Tues);
 printf("%d\n", Wed);
 printf("%d\n",Thur);
 printf("%d\n", Fri);
 printf("%d\n", Sat);
 printf("%d\n", Sun);
  return 0;
}

输出结果:

枚举的优点:

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

#define的功能:

define有一种代替的作用且是在预处理的时候进行代码的替换处理。

复制代码
#define M 100

int main()
{
  int m = M;
  return 0;
}

通过#define我们将M用100代替,因此最后m得到的值是100,而不是M。

#define再预处理的时候就将代码进行了修饰。

而与#define对比,枚举的优点有:

  1. 增加代码的可读性和可维护性
  2. 和#define定义的标识符⽐较枚举有类型检查,更加严谨。
  3. 便于调试,预处理阶段会删除 #define 定义的符号。
  4. 使⽤⽅便,⼀次可以定义多个常量。
  5. 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤。
相关推荐
君鼎1 分钟前
IO复用详解——C/C++
开发语言·c++
愚润求学6 分钟前
【Linux】动静态库的使用
linux·运维·服务器·开发语言·c++·笔记
写代码写到手抽筋16 分钟前
C++性能优化之访存优化(未完)
开发语言·c++
Dovis(誓平步青云)29 分钟前
基于面向对象设计的C++日期推算引擎:精准高效的时间运算实现与运算重载工程化实践
开发语言·c++·经验分享·笔记
寂空_33 分钟前
【算法笔记】ACM数论基础模板
c++·笔记·算法
夜晚中的人海42 分钟前
【C语言】初阶数据结构相关习题(二)
c语言·开发语言·数据结构
kchmmd1 小时前
CMakeLists生成调用静态动态库可执行demo
c++
cdut_suye1 小时前
【Linux系统】从 C 语言文件操作到系统调用的核心原理
java·linux·数据结构·c++·人工智能·机器学习·云计算
wuqingshun3141591 小时前
蓝桥杯 10. 全球变暖
c++·算法·职场和发展·蓝桥杯
Tummer83631 小时前
C++四种类型转换:static_cast、 dynamic_cast const cast、 reinterpret_cast
c++