11.10 枚举类型
在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有
十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。
为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为
该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是
一种构造类型,因为它不能再分解为任何基本类型。
11.10.1 枚举类型的定义和枚举变量的说明
1. 枚举的定义枚举类型定义的一般形式为:
enum 枚举名{ 枚举值表 };
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
例如:
该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或
者叫对象可能存在的情况也可以说是可能的值一一例举出来。
举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知
道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!
enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元
素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。
这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!
enum box{pencil,pen};
enum box box2;//或者简写成box box2;
再有一种就是在声明的时候同时定义。
enum {pencil,pen}box,box2; //在声明的同时进行定义!
枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,
(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!
enum box{pencil=1,pen=2};
但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增
的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1
操作,例如
enum box{pencil=3,pen};//这里pen就是4系统将自动进行pen=4的定义赋值操作!
前面说了那么多,下面给出一个完整的例子大家可以通过以下的代码的学习进行更完整的学习!
#include <iostream>
using namespace std;
void main(void)
{
enum egg {a,b,c};
enum egg test; //在这里你可以简写成egg test;
test = c; //对枚举变量test进行赋予元素操作,这里之所以叫赋元素操作不叫赋值
//操作就是为了让大家明白枚举变量是不能直接赋予算数值的,例如(test=1;)
//这样的操作都是不被编译器所接受的,正确的方式是先进行强制类型转换
//例如(test = (enum egg) 0;)!
if (test==c)
{
cout <<"枚举变量判断:test枚举对应的枚举元素是c" << endl;
}
if (test==2)
{
cout <<"枚举变量判断:test枚举元素的值是2" << endl;
}
cout << a << "|" << b << "|" << test <<endl;
test = (enum egg) 0; //强制类型转换
cout << "枚举变量test值改变为:" << test <<endl;
cin.get();
}
看到这里要最后说一个问题,就是枚举变量中的枚举元素(或者叫枚举常量)在特殊情
况下是会被自动提升为算术类型的!
#include <iostream>
using namespace std;
void main(void)
{
enum test {a,b};
int c=1+b; //自动提升为算术类型
cout << c <<endl;
cin.get();
}
我自己弄的例子:
1 /*================================================ ================
2 *Name: /arm/2440_root/app/gnu_test/test01.c
3 *Made by: zhangshengheng @ Wed Sep 16 10:12:44 CST 2009
4 *Email: zhangshengheng@126.com
5 *FUNC: the function of this program is :
6 enum用法的检验
7 ================================================== ==============*/
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <string.h>
11
12 typedef enum egg {
13 NO_ECC_0,
14 ECC6_1,
15 ECC11_2 = 100,
16 ECC_RE_3
17 }ECC_TYPE;
18
19 int main(void)
20 {
21 ECC_TYPE ecc;
22 printf("************test enum*****************\n");
23 printf("the ECC_TYPE = %d\n", ecc=NO_ECC_0);
24 printf("the ECC_TYPE = %d\n", ecc=ECC6_1);
25 printf("the ECC_TYPE = %d\n", ecc=ECC11_2);
26 printf("the ECC_TYPE = %d\n", ecc=ECC_RE_3);
27
28
29
30 return 0;
31
32 }
程序运行结果:
dtlinux@gnu_test$./enum
************test enum**********
the ECC_TYPE = 0
the ECC_TYPE = 1
the ECC_TYPE = 100
the ECC_TYPE = 101
分享到:
相关推荐
同时,枚举值可以通过`.ToString()`方法转换为字符串,或者通过`Enum.Parse()`和`Enum.TryParse()`方法将字符串转换回枚举值。 五、枚举与其他类型的转换 枚举类型可以与它的底层类型进行转换。`unchecked`上下...
接下来,我们将深入探讨Java枚举类型的使用方法及其相关知识点。 1. **枚举的声明与初始化** 枚举类型的声明方式类似于类,但以`enum`关键字开头。例如: ```java enum Color { RED, GREEN, BLUE } ``` 这里...
### Enum的深度解析与应用技巧 ...总之,掌握`Enum`的用法及其高级技巧,对于提升代码质量和开发效率具有重要意义。在日常编程实践中,灵活运用`Enum`的各种特性,将有助于构建更加健壮、高效的应用系统。
Java enum 的用法详解 Java enum(枚举)是一种特殊的数据类型,用于定义一组固定的常量。从 JDK 1.5 开始,Java 引入了 enum 机制,解决了传统的常量定义方式的不足。 用法一:常量 在 JDK 1.5 之前,我们定义...
枚举类型(enum)在编程语言中,如C语言,是一种强大的工具,用于定义一组具有固定数量和特定名称的常量。这些常量通常代表一些有限的、互斥的值集合,比如颜色、星期几或者状态等。枚举类型不仅提高了代码的可读性...
它们支持多种高级用法,包括构造函数、方法、switch语句、继承接口等,是编写高质量代码的重要工具。在处理固定的、有限的、不可变的数据集时,使用枚举往往比使用常量或字符串更合适,也更易于理解和维护。
在编程中,`enum`(枚举)类型是用来定义一组命名的整数常量,它在C++中被广泛使用。然而,在某些情况下,我们可能会遇到`enum`类型的重定义问题,这通常发生在包含不同库或者头文件时,因为这些库可能已经定义了...
下面我们将深入探讨enum的使用方法。 1. **定义枚举** 定义枚举的关键字是`enum`,例如: ```java public enum WeekDays { MON, TUE, WED, THU, FRI, SAT, SUN; } ``` 这里我们创建了一个名为`WeekDays`的...
本篇将通过"Java Enum使用Demo源码"深入探讨Java枚举的用法。 首先,枚举在Java中是一个类,可以通过`enum`关键字来声明。例如,我们可以创建一个表示星期的枚举类型: ```java public enum WeekDay { MONDAY, ...
用法 local Enum = require " enum " -- Enums can be created like so: local Number = Enum ( " Zero " , " One " , " Two " , " Three " ) -- To control the starting value of an enum, the first value can be...
枚举(Enum)在Java中是一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的常量表示方式。以下是对Enum的详细讲解: 1. **基本枚举定义**: ```java enum Color {BLUE, RED, GREEN;} ``` 这是...
### 关于 `typedef` 的用法总结 #### 1. 定义类型的别名 `typedef` 最常见的用途之一就是定义一种类型的别名。这种方式不仅仅实现了宏替换的功能,还能够帮助开发者更清晰地表达代码意图,并减少代码中的潜在错误...
Swift中的枚举使用`enum`关键字定义,每个枚举值通过`case`关键字声明。例如,我们可以创建一个表示姓氏的枚举: ```swift enum Surname { case 张 case 王 case 李 case 赵 } ``` 可以通过`.张`等方式...
安装composer require tebru/enum用法要使用,扩展AbstractEnum并实现getConstants()方法。 class DirectionEnum extends AbstractEnum{ const NORTH = 'north'; const EAST = 'east'; const SOUTH = 'south'; ...
目录介绍特征安装用法设置一个MappedValueRepresentable枚举使用MappedValueCollectionRepresented 使用MappedEnum类型的可编码枚举在ESet中使用OptionSet中的EnumSet 将EnumSet转换为Enum数组使用...
wise_enum 因为反思使你明智,而不是聪明 wise_enum是C ++ wise_enum的独立智能枚举库。 它支持C ++中的智能枚举类所期望的所有标准功能: 告诉您枚举数 让您遍历所有枚举值 将string转换为enum,并将enum转换为...
在Laravel框架中,"enum"(枚举)是一种实用的工具,用于限制特定属性或方法的值只能是预定义的一组。PHP在版本8.0中引入了对枚举的支持,这使得在 Laravel 开发中更加方便地处理固定选项的数据类型。本教程将深入...
本文实例总结了python模拟enum枚举类型的方法。分享给大家供大家参考。具体分析如下: python中没有enum枚举类型,可能python认为这玩意压根就没用,下面列举了三种方法模拟enum枚举类型 方法1. 使用自定义类 class...
以下是一个示例,展示了如何使用这些内置方法: ```java public class EnumMethodDemo { enum Color {RED, GREEN, BLUE} enum Size {BIG, MIDDLE, SMALL} public static void main(String[] args) { // 打印...