C语言enum关键字
很多初学者对枚举(enum)感到迷惑,或者认为没什么用,其实枚举(enum)是个很有用的数据类型。
一、枚举类型的使用方法
一般的定义方式如下:
enum enum_type_name
{
ENUM_CONST_1,
ENUM_CONST_2,
...
ENUM_CONST_n
} enum_variable_name;
注意:enum_type_name 是自定义的一种数据数据类型名,而enum_variable_name 为enum_type_name类型的一个变量,也就是我们平时常说的枚举变量。实际上enum_type_name类型是对一个变量取值范围的限定,而花括号内是它的取值范围,即enum_type_name 类型的变量enum_variable_name 只能取值为花括号内的任何一个值,如果赋给该类型变量的值不在列表中,则会报错或者警告。ENUM_CONST_1、ENUM_CONST_2、...、ENUM_CONST_n,这些成员都是常量,也就是我们平时所说的枚举常量(常量一般用大写)。
enum 变量类型还可以给其中的常量符号赋值,如果不赋值则会从被赋初值的那个常量开始依次加1,如果都没有赋值,它们的值从0 开始依次递增1。如分别用一个常数表示不同颜色:
enum Color
{
GREEN = 1,
RED,
BLUE,
GREEN_RED = 10,
GREEN_BLUE
}ColorVal;
其中各常量名代表的数值分别为:
GREEN = 1
RED = 2
BLUE = 3
GREEN_RED = 10
GREEN_BLUE = 11
二、枚举与#define 宏的区别
下面再看看枚举与#define 宏的区别:
1)#define 宏常量是在预编译阶段进行简单替换。枚举常量则是在编译的时候确定其值。
2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量。
3)枚举可以一次定义大量相关的常量,而#define 宏一次只能定义一个。
留两个问题:
A),枚举能做到事,#define 宏能不能都做到?如果能,那为什么还需要枚举?
B),sizeof(ColorVal)的值为多少?为什么?
C语言enum关键字相关推荐
- c语言字母表关键字,读书笔记-C语言关键字
001 关键字 C语言一共32个关键字 1. 声明和定义 在开始认识关键字前,必须要明白什么是声明,什么事定义: 定义:(编译器)创建一个对象,为这个对象分配一段内存并给他取上一个名字.在一个作用域内 ...
- C语言 enum和typedef enum的区别
在了解enum和typedef enum的区别之前先应该明白typedef的用法和意义. C语言里typedef的解释是用来声明新的类型名来代替已有的类姓名,例如: typedef int CHANG ...
- c语言中switch语句流程图_C语言:C语言保留字(关键字)
保留字(reserved word) 保留字又称关键字. 指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用. 每种程序设计语言都规定了自己的一套保留字. 例如:BASIC语言规 ...
- Java分享笔记:自定义枚举类 使用enum关键字定义枚举类
在JDK1.5之前没有enum关键字,如果想使用枚举类,程序员需要根据Java语言的规则自行设计.从JDK1.5开始,Java语言添加了enum关键字,可以通过该关键字方便地定义枚举类.这种枚举类有自 ...
- C语言的关键字 详解
一.C语言的关键字 C语言中的32个关键字及其意思如下: 由 ANSI 标准定义的C 语言关键字共32 个.根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类. 1.数据类型关键字 ...
- C语言标准ANSI C、C语言的特点、C语言的关键字(32个)
C语言标准:通常称为ANSI C. C语言的特点: 1.C语言简洁.紧凑,使用方便.灵活.ANSI C一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示,压缩了一切不必要的成分. 2 ...
- C语言的关键字和标识符
一.关键字 关键字是具有特定含义的.专门用来说明C语言的特定成分的一类单词. C语言的关键字都是用小写字母书写的,不能用大写字母书写.关键字不能用于 ...
- 对C语言的关键字及部分关键字用法的简单理解
小盆友,你是否有很多问号??? C语言的关键字是什么?有哪些?他们如何用??? 我也在学习中迷惑着,所以把今天学习到的稍微做一下总结,方便自己以后的复习(目前学到的比较粗浅,以后还需要深入学习). 哪 ...
- c语言中关键字的含义,c语言中的关键字有哪些?有什么含义?
c语言中的关键字有哪些?有什么含义? 发布时间:2020-04-23 09:33:30 来源:亿速云 阅读:174 作者:小新 这篇文章主要介绍了c语言中的关键字有哪些?有什么含义?,具有一定借鉴价值 ...
最新文章
- 密码学摘要算法之MD5
- java跳转语句包含goto_Java 语句标签实现goto跳转
- php关系运算符语句,PHP基础__运算符和逻辑语句(三)
- c语言删除文件中的数据_第20问:删除了数据文件,该往哪个方向逃跑
- c++11 auto 类型说明符详解
- 【kali】kali设置burpsuite抓包dvwa
- python matplotlib使用ax绘图
- 动态路由RIP的简易配置
- 20200507:力扣151周赛下
- sql python r_Mode Studio,支持Python,R和SQL的云数据分析利器
- 全国各地车牌代码整理出数据库表,直接生成表
- 详解汽轮机的TSI系统
- PHP运行的环境安装
- JetPack知识点实战系列十:ExoPlayer进行视频播放的实现
- Mysql主从同步报错解决:Fatal error: The slave I/O thread stops because master and slave have equal..
- 编写Java程序,以继承和多态思想模拟饲养员喂养不同动物的不同行为
- 聊聊在深圳互联网公司工作一年后,回西安感受到的行业差距
- 软件项目管理案例教程第4版课后习题第一章
- 四种物联网卡计算模式
- 基于华为eNSP的中小企业办公园区网络规划与设计
热门文章
- 一步步编写操作系统80 扩展内联汇编1
- python程序框架的描述_简单介绍Python下自己编写web框架的一些要点
- 解决Hbase输入list,创建表报错,输入status可以,org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: S
- REVERSE-PRACTICE-BUUCTF-6
- Spring Boot Actuator监控关闭
- java隐藏密钥_java – 在Android中隐藏密钥库密码的最佳方法是什么?
- CCNA-第七篇-思科私有路由协议-EIGRP-初级
- 【LeetCode 986】 区间列表的交集(区间交集)
- 【牛客 - 369F】小D的剑阵(最小割建图,二元关系建图,网络流最小割)
- 【FZU - 2140 】Forever 0.5 (计算几何,构造)