自定义类型枚举(下)

简介: 自定义类型枚举

我们可以看到这里并没有报错,但是我们把文件后缀改为cpp再试试

因为我们赋的数字其实是整形类型,而变量是枚举类型,因为c语言要求没那么严格,但是换成c++后要求严格了就会报错

当然在声明枚举类型的时候是可以赋初值的

enum Color//颜⾊
{
  RED = 2,
  GREEN = 4,
  BLUE = 8
};

扩展

不知道各位有没有想过枚举常量的内存大小是多少?

我们在之前又说过枚举常量括号中的类型默认从0开始,依次递增1

每次对枚举变量进行赋值也只有括号中的那几种可能中的其中一种,因此枚举变量只代表着括号中的一个成员

括号中的成员取值既然是从0开始,依次增加1,说明这些数字的大小和括号中成员的大小是一样的,那我们就可以大胆推测这些数字的大小是4个字节,也就是整形类型的大小.

枚举类型的优点

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

(因为#define 会直接将标识号给替换)

我们举个例子

这里会报错,原因就是我们将里面的成员直接替换成了数字

枚举的优点

  1. 增加代码的可读性和可维护性
  2. 枚举与#define定义的标识符(没有类型)比较枚举有类型检查,更加严谨
  3. 便于调试,预处理阶段会删除 #define 定义的符号
  4. 使用方便,一次可以定义多个常量
  5. 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用
相关文章
|
芯片 异构计算
【FPGA】高云FPGA之数字钟实验->HC595驱动数码管(一)
【FPGA】高云FPGA之数字钟实验->HC595驱动数码管
427 2
|
消息中间件 Kubernetes NoSQL
剑指offer常见题 - 位运算问题(一)
剑指offer常见题 - 位运算问题(一)
|
10月前
|
SQL 运维 监控
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
|
10月前
|
人工智能 自然语言处理 安全
国内如何使用claude?人工智能claude国内使用方法来了!
Claude AI 是由 Anthropic 公司开发的一款新一代 AI 助手,旨在成为更安全、更友好、更可靠的 AI 系统。它基于 Anthropic 对 AI 安全性的深入研究,并采用 “Constitutional AI” (宪法式 AI) 的训练方法,
|
11月前
|
Linux iOS开发 网络架构
如何使用 Ping 命令监测网络丢包情况?
如何使用 Ping 命令监测网络丢包情况?
8090 48
|
机器学习/深度学习 存储 安全
基于YOLOv8深度学习的人脸面部口罩检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的人脸面部口罩检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
|
jenkins 持续交付 网络安全
[jenkins]连接git仓库
[jenkins]连接git仓库
192 1
|
人工智能 自然语言处理 搜索推荐
声临其境!体验阿里云开源音频基座大模型——FunAudioLLM
阿里通义实验室开源了全新的音频基座大模型FunAudioLLM,包含SenseVoice与CosyVoice两大核心模型。SenseVoice专精于多语言语音识别、情感辨识与声音事件检测,支持50余种语言,中文及粤语识别准确率提升50%以上。CosyVoice则擅长语音合成,只需3-10秒原始音频即可克隆音色,并支持跨语言合成。FunAudioLLM的应用场景广泛,包括语音到语音翻译、情感语音对话、互动播客及有声读物等。CosyVoice的在线体验显示,其生成的语音自然流畅,支持定制化及高级情绪控制,超越竞品ChatTTS。SenseVoice在情感识别及长音频处理方面表现出色。
26044 28
使用Java创建虚拟机并管理libvirt
使用Java创建虚拟机并管理libvirt
210 2
|
IDE Java Spring
Spring Boot中的多模块项目构建
Spring Boot中的多模块项目构建