很多初学者对枚举(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关键字相关推荐

  1. c语言字母表关键字,读书笔记-C语言关键字

    001 关键字 C语言一共32个关键字 1. 声明和定义 在开始认识关键字前,必须要明白什么是声明,什么事定义: 定义:(编译器)创建一个对象,为这个对象分配一段内存并给他取上一个名字.在一个作用域内 ...

  2. C语言 enum和typedef enum的区别

    在了解enum和typedef enum的区别之前先应该明白typedef的用法和意义. C语言里typedef的解释是用来声明新的类型名来代替已有的类姓名,例如: typedef int CHANG ...

  3. c语言中switch语句流程图_C语言:C语言保留字(关键字)

    保留字(reserved word) 保留字又称关键字. 指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用. 每种程序设计语言都规定了自己的一套保留字. 例如:BASIC语言规 ...

  4. Java分享笔记:自定义枚举类 使用enum关键字定义枚举类

    在JDK1.5之前没有enum关键字,如果想使用枚举类,程序员需要根据Java语言的规则自行设计.从JDK1.5开始,Java语言添加了enum关键字,可以通过该关键字方便地定义枚举类.这种枚举类有自 ...

  5. C语言的关键字 详解

    一.C语言的关键字 C语言中的32个关键字及其意思如下: 由 ANSI 标准定义的C 语言关键字共32 个.根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类. 1.数据类型关键字 ...

  6. C语言标准ANSI C、C语言的特点、C语言的关键字(32个)

    C语言标准:通常称为ANSI C. C语言的特点: 1.C语言简洁.紧凑,使用方便.灵活.ANSI C一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示,压缩了一切不必要的成分. 2 ...

  7. C语言的关键字和标识符

    一.关键字                  关键字是具有特定含义的.专门用来说明C语言的特定成分的一类单词.          C语言的关键字都是用小写字母书写的,不能用大写字母书写.关键字不能用于 ...

  8. 对C语言的关键字及部分关键字用法的简单理解

    小盆友,你是否有很多问号??? C语言的关键字是什么?有哪些?他们如何用??? 我也在学习中迷惑着,所以把今天学习到的稍微做一下总结,方便自己以后的复习(目前学到的比较粗浅,以后还需要深入学习). 哪 ...

  9. c语言中关键字的含义,c语言中的关键字有哪些?有什么含义?

    c语言中的关键字有哪些?有什么含义? 发布时间:2020-04-23 09:33:30 来源:亿速云 阅读:174 作者:小新 这篇文章主要介绍了c语言中的关键字有哪些?有什么含义?,具有一定借鉴价值 ...

最新文章

  1. java客户服务器程序预约口罩_团队作业(二):Github实训:口罩预约
  2. DarknetTiny模型结构
  3. unity hub是什么东西_Unity可编程渲染管线(SRP)教程:一、自定义管线
  4. timestamp 字段
  5. 为什么我的JVM访问的内存少于通过-Xmx指定的内存?
  6. jquery、javascript实现(get、post两种方式)跨域解决方法
  7. 简易的实现对象内存池
  8. 联想微型计算机功率,解锁全部潜力,联想这款笔记本可以将CPU功耗提升至24W
  9. 恒大健康上半年营收同比增132% 新能源汽车将成新增长点
  10. 拦截方法并替换成自己的方法
  11. end_request: I/O error
  12. 拿去吧你,软件测试的文件和目录测试都在这
  13. 好看的php表格样式,四个好看的CSS样式表格 | 学步园
  14. git创建本地代码库
  15. .rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.5.0/lib/cocoapods/executable.rb:89: warning: Insecure
  16. 推荐几个免费的ppt模板网站
  17. NLP领域表达退化各向异性理解及对应策略总结
  18. win10系统如何搜索计算机,让您电脑搜索查找更方便!Win10系统建立索引教程
  19. linux sigaction函数 sa_flags的值
  20. php 微信分享功能_基于thinkPHP实现的微信自定义分享功能

热门文章

  1. SharePoint学习札记[6] — WebPart之基础
  2. linux下sublime安装目录在那,linux下sublime text 3安装到配置
  3. python多重赋值技巧_python教程12课:多元赋值、多重赋值、运算符以及判断字符串类型...
  4. Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性
  5. 【Python 必会技巧】获取字典中(多个)最大值(value)的键(key)
  6. CCIE理论-第九篇-IPV6详细介绍
  7. 【SPOJ - QTREE2】Query on a tree II(LCA,倍增)
  8. 【CodeForces - 608C】Chain Reaction (二分 或 dp ,思维)
  9. 计算机统考测试,计算机统考专业测试题.doc
  10. delphi webbrowser 显示 html,delphi webbrowser