当前位置: 首页 > news >正文

C学习-枚举(九)

一、枚举的概念

枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。

二、枚举类型的定义

一般形式为:enum 枚举名 {枚举元素1,枚举元素2,……};

enum Season {spring, summer, autumn, winter}; 

三、枚举变量的定义

前面只是定义了枚举类型,接下来就可以利用定义好的枚举类型定义变量。

跟结构体一样,有3种方式定义枚举变量

1.先定义枚举类型,再定义枚举变量

enum Season {spring, summer, autumn, winter};

enum Season s;

2.定义枚举类型的同时定义枚举变量

enum Season {spring, summer, autumn, winter} s;

3.省略枚举名称,直接定义枚举变量

enum {spring, summer, autumn, winter} s;

上面三种方式定义的都是枚举变量s

四、枚举使用的注意

1> C语言编译器会将枚举元素(spring、summer等)作为整型常量处理,称为枚举常量。

2> 枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1。

enum Season {spring, summer, autumn, winter};

也就是说spring的值为0,summer的值为1,autumn的值为2,winter的值为3

3> 也可以在定义枚举类型时改变枚举元素的值

enum season {spring, summer=3, autumn, winter};

没有指定值的枚举元素,其值为前一元素加1。也就说spring的值为0,summer的值为3,autumn的值为4,winter的值为5

五、枚举变量的基本操作

1.赋值

可以给枚举变量赋枚举常量或者整型值

enum Season {spring, summer, autumn, winter} s;

s = spring; // 等价于 s = 0;

s = 3; // 等价于 s = winter;

2.遍历枚举元素

enum Season {spring, summer, autumn, winter} s;

// 遍历枚举元素
for (s = spring; s <= winter; s++) {
    printf("枚举元素:%d \n", s);
}

输出结果:

枚举元素:0 
枚举元素:1 
枚举元素:2 
枚举元素:3 

相关文章:

  • 关于网易云音乐爬虫的api接口?
  • 设计模式(一)----工厂模式
  • java 基础2
  • SQLSERVER 2008 编辑所有或者任意行
  • SpringMVC接收集合页面参数
  • JSR 303 - Bean Validation 简单介绍及用法
  • mysql5.6.36简单配置主从复制
  • 安装Discuz
  • 玩转Android Camera开发(三):国内首发---使用GLSurfaceView预览Camera 基础拍照demo
  • 学习笔记-RTOS任务创建
  • man syslog | col -b syslog.txt
  • python---数据类型---字典
  • 逆向及修复最新iOS版少数派客户端的闪退bug
  • 开放产品开发(OPD):OPD框架
  • Folder2Iso - Download
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CentOS7 安装JDK
  • Codepen 每日精选(2018-3-25)
  • JavaScript对象详解
  • java小心机(3)| 浅析finalize()
  • nfs客户端进程变D,延伸linux的lock
  • Promise面试题2实现异步串行执行
  • Python打包系统简单入门
  • SQLServer之创建数据库快照
  • Terraform入门 - 3. 变更基础设施
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 动态魔术使用DBMS_SQL
  • 高性能JavaScript阅读简记(三)
  • 机器学习学习笔记一
  • 坑!为什么View.startAnimation不起作用?
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • postgresql行列转换函数
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​人工智能书单(数学基础篇)
  • $$$$GB2312-80区位编码表$$$$
  • $().each和$.each的区别
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二)丶RabbitMQ的六大核心
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (转)socket Aio demo
  • (转载)深入super,看Python如何解决钻石继承难题
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题