前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >c语言枚举类型enum例子_枚举是什么意思

c语言枚举类型enum例子_枚举是什么意思

作者头像
全栈程序员站长
发布于 2022-11-03 06:49:19
发布于 2022-11-03 06:49:19
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

在实际的编程应用中,有的变量只有几种可能的取值,譬如说一个星期的七种可能,性别的两种可能等等。C语言为这种类型的变量的定义提供了enum关键字

要使用枚举类型的变量,首先需要先定义一个枚举类型名,然后再声明该变量是枚举类型的


例1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
enum WEEKDAY{   \\该语句定义了一个枚举类型
    MONDAY = 1,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};

enum WEEKDAY day;   \\该语句声明了一个枚举类型的变量

Jetbrains全家桶1年46,售后保障稳定

上述例子中的MONDAY、TUSEDAY等称为枚举元素枚举常量(本人更倾向于称其为枚举常量,因为这样可以反映其性质),它们是用户自定义的标识符而已。

没有显式说明的情况下,枚举类型中的第一个枚举常量的值为0,第二个为1,以此类推。如果只指定了部分枚举常量的值,那么未指定值的枚举常量的值将依着最后一个指定值向后递增(步长为1)

不同枚举类型中的枚举常量的名字必须互不相同。同一枚举类型中的不同的枚举常量可以具有相同的值

枚举类型为建立常量值与标识符之间的关联提供了一种便利的方式。相对于#define语句来说,它的优势在于常量值可以自动生成

尽管可以声明枚举类型的变量,但编译器不检查这种类型变量中存储的值是否为该枚举类型中的有效值,不过,枚举类型的变量提供这种检查

注意:

  • 不能对枚举常量进行赋值操作(定义枚举类型时除外)
  • 枚举常量和枚举变量可以用于判断语句,实际用于判断的是其中实际包含的值
  • 一个整数不能直接赋值给一个枚举变量,必须用该枚举变量所属的枚举类型进行类型强制转换才行
  • 使用常规的手段输出无法输出枚举常量所对应的字符串,因为枚举常量为整型值
  • 在使用枚举变量的时候,我们不关心其值的大小,而是其表示的状态

例2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
enum WEEKDAY{
    MONDAY = 1,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};

注意点:

  • 枚举常量之间用逗号隔开,最后一个枚举常量之后不需要逗号
  • 整个枚举类型定义语句的最后需要一个分号
  • WEEKDAY是该枚举类型的名字,这是一个可选项

1、定义枚举类型后声明枚举变量
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
enum WEEKDAY{
    MONDAY = 1,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};

int main(int argc, char ** argv)
{
    enum WEEKDAY day;
    day = MONDYA;

    return 0;
}
2、定义枚举类型的同时声明枚举变量
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
enum WEEKDAY{
    MONDAY= 1,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}day;

int main(int argc, char ** argv)
{
    day = MONDYA;

    return 0;
}
3、定义枚举类型的同时利用typedef关键字将其声明为类型别名,然后利用该类型别名声明枚举类型变量
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef enum WEEKDAY{
    MONDAY = 1,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}WEEKDAYS;

int main(int argc, char ** argv)
{
    WEEKDAYS day = MONDYA;

    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/200914.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【prometheus】-02 一张图彻底搞懂Prometheus服务发现机制
Prometheus是基于Pull模式抓取监控数据,首先要能够发现需要监控的目标对象target,特别Prometheus最开始设计是一个面向云原生应用程序的,云原生、容器场景下按需的资源使用方式对于监控系统而言就意味着没有了一个固定的监控目标,所有的监控对象(基础设施、应用、服务)都在动态的变化。而对于Prometheus而言其解决方案就是引入一个中间的代理人(服务注册中心),这个代理人掌握着当前所有监控目标的访问信息,Prometheus只需要向这个代理人询问有哪些监控目标控即可, 这种模式被称为服务发现(service discovery)。
Reactor2020
2023/03/22
8960
【prometheus】-02 一张图彻底搞懂Prometheus服务发现机制
【云原生 • Prometheus】图解Prometheus数据抓取原理
discovery模块利用各种服务发现协议发现目标采集点,并通过channel管道将最新发现的目标采集点信息实时同步给scrape模块,scrape模块负责使用http协议从目标采集点上抓取监控指标数据。
Reactor2020
2023/04/20
1.4K0
【云原生 • Prometheus】图解Prometheus数据抓取原理
prometheus 服务发现原理
如上图,Prometheus核心功能包括服务发现、数据采集和数据存储。服务发现模块专门负责发现需要监控的目标采集点(target)信息,数据采集模块从服务发现模块订阅该信息,获取到target信息后,其中就包含协议(scheme)、主机地址:端口(instance)、请求路径(metrics_path)、请求参数(params)等;然后数据采集模块就可以基于这些信息构建出一个完整的Http Request请求,定时通过pull http协议不断的去目标采集点(target)拉取监控样本数据(sample);最后,将采集到监控样本数据交由TSDB模块进行数据存储。
Reactor2020
2023/03/22
5620
prometheus 服务发现原理
构建企业级监控平台系列(十三):Prometheus Server 配置详解
更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。
民工哥
2023/10/23
1.7K0
构建企业级监控平台系列(十三):Prometheus Server 配置详解
​修改prometheus实现数据库存储报警规则和收集目标
prometheus本身报警规则及服务发现策略基于文件配置很不方便,对于非K8S服务监控经常需要操作配置文件,不利于管理系统平台化建设。实现思路:将相关配置信息存储在MySQL里,加入新的逻辑,实现保留文件加载配置的同时,加载MySQL中的信息, 动态生成 static_config及 alert_rule从而实现报警及监控目标的配置UI化.
有点技术
2020/07/14
1.3K0
prometheus内核
这篇文章会着重分析 其中的 discovery => scrap => storage 的流程
王磊-字节跳动
2019/12/29
2.5K0
初试 Prometheus + Grafana 监控系统搭建并监控 Mysql
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aixiaoyang168/article/details/81354059
哎_小羊
2019/05/25
2.1K0
Prometheus +VictoriaMetrics+Granafa安装部署
https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz
授客
2025/01/19
1960
Prometheus +VictoriaMetrics+Granafa安装部署
运维实战来了!如何构建适用于YashanDB的Prometheus Exporter
小崖又收到用户投稿啦。今天分享的是构建YashanDB Exporter的核心设计理念和关键方法,希望也能为你的运维实战加分!
qiaoyikefu
2025/01/09
830
运维实战来了!如何构建适用于YashanDB的Prometheus Exporter
新功能:Prometheus Agent 模式上手体验
Prometheus 几乎已经成为了云原生时代下监控选型的事实标准,它也是第二个从 CNCF 毕业的项目。
Jintao Zhang
2021/12/01
1.4K0
新功能:Prometheus Agent 模式上手体验
【prometheus】-08 图解云原生服务发现机制
分析过云原生监控接入方案,下面开始看下云原生服务发现机制。Prometheus本身就是作为云原生监控出现的,所以对云原生服务发现支持具有天然优势。Kubernetes 服务发现协议允许使用Kubernetes Rest API检索出Prometheus需要监控的targets,并且跟着集群状态进行同步变更。
Reactor2020
2023/03/22
3960
【prometheus】-08 图解云原生服务发现机制
《Prometheus监控实战》第3章 安装和启动Prometheus
第3章 安装和启动Prometheus ---- 3.1 安装Prometheus 如果要将Prometheus部署到生产环境或进行扩展,则应该始终选择配置管理工具作为安装方法 下载地址:https://prometheus.io/download/ 3.1.4 在Mac OS X上安装Prometheus $ brew install prometheus 3.1.5 通过监控套件安装Prometheus 使用Docker Compose安装Prometheus、Node Exporter和Grafan
yeedomliu
2019/12/19
1.3K0
打造云原生大型分布式监控系统(三): Thanos 部署与实践
上一篇 Thanos 架构详解 我们深入理解了 thanos 的架构设计与实现原理,现在我们来聊聊实战,分享一下如何部署和使用 Thanos。
imroc
2020/04/20
6.3K5
在 Kubernetes 上手动部署 Prometheus
我们知道监控是保证系统运行必不可少的功能,特别是对于 Kubernetes 这种比较庞大的系统来说,监控报警更是不可或缺,我们需要时刻了解系统的各种运行指标,也需要时刻了解我们的 Pod 的各种指标,更需要在出现问题的时候有报警信息通知到我们。
CNCF
2021/02/23
8440
在 Kubernetes 上手动部署 Prometheus
Prometheus监控学习笔记之Prometheus如何热加载更新配置
当 Prometheus 有配置文件修改,我们可以采用 Prometheus 提供的热更新方法实现在不停服务的情况下实现配置文件的重新加载。
Jetpropelledsnake21
2019/10/10
7K0
Prometheus监控学习笔记之Prometheus如何热加载更新配置
prometheus告警规则管理
Prometheus支持用户自定义Rule规则。Rule分为两类,一类是Recording Rule,另一类是Alerting Rule。Recording Rule的主要目的是通过PromQL可以实时对Prometheus中采集到的样本数据进行查询,聚合以及其它各种运算操作。而在某些PromQL较为复杂且计算量较大时,直接使用PromQL可能会导致Prometheus响应超时的情况。这时需要一种能够类似于后台批处理的机制能够在后台完成这些复杂运算的计算,对于使用者而言只需要查询这些运算结果即可。Prometheus通过Recoding Rule规则支持这种后台计算的方式,可以实现对复杂查询的性能优化,提高查询效率。
没有故事的陈师傅
2021/09/09
1.9K0
初玩prometheus
因为Prometheus是基于GoLang编写,编译后的软件包,不依赖于任何的第三方依赖。用户只需要下载对应平台的二进制包,并解压添加基本配置即可正常启动Prometheus server。
张琳兮
2019/11/04
8970
初玩prometheus
运维实战来了!如何构建适用于 YashanDB 的 Prometheus Exporter
小崖又收到用户投稿啦。今天分享的是构建 YashanDB Exporter 的核心设计理念和关键方法,希望也能为你的运维实战加分!
用户10349277
2025/02/21
1320
如何使用Prometheus配置自定义告警规则
Prometheus是一个用于监控和告警的开源系统。一开始由Soundcloud开发,后来在2016年,它迁移到CNCF并且称为Kubernetes之后最流行的项目之一。从整个Linux服务器到stand-alone web服务器、数据库服务或一个单独的进程,它都能监控。在Prometheus术语中,它所监控的事物称为目标(Target)。每个目标单元被称为指标(metric)。它以设置好的时间间隔通过http抓取目标,以收集指标并将数据放置在其时序数据库(Time Series Database)中。你可以使用PromQL查询语言查询相关target的指标。
CNCF
2020/03/25
6.1K0
如何使用Prometheus配置自定义告警规则
prometheus使用总结(2)
建议使用第五步启动方式,找到配置文件加上--web.enable-lifecycle,此参数的意义在于我们修改了prometheus.yml后直接远程热加载即可,不用重启服务,使用下面的命令即可。
Bob hadoop
2021/04/01
1.5K0
推荐阅读
相关推荐
【prometheus】-02 一张图彻底搞懂Prometheus服务发现机制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验