C/C++中枚举类型(enum)

如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。

举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!

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();}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索变量
, enum
, box
, 枚举变量
, 类型
, 元素
, 一个
自动生成enum值
c 枚举类型enum用法、枚举类型enum用法、java枚举类型enum用法、php枚举类型enum用法、ios枚举类型enum用法,以便于您获取更多的相关知识。

时间: 2024-11-05 12:22:20

C/C++中枚举类型(enum)的相关文章

mysql中枚举类型之enum详解

对于255至65535个成员,需要2个字节存储.最多允许有65535个成员. 先通过sql语句创建一个具有枚举类型的数据表.  代码如下 create table user_sex( sex enum('M','F'));   再往表中写入几条测试数据: insert into user_sex values('M'),('s'),('2'),('f');   在表中查看写入的结果时,发现变成了这样M,M,M,F(注意每个字符为一条记录).由结果可知enum类型是忽略大小写的,'f'被自动转化成

全面解读Java中的枚举类型enum的使用_java

关于枚举大多数地方写的枚举都是给一个枚举然后例子就开始switch,可是我想说,我代码里头来源的数据不太可能就是枚举,通常是字符串或数字,比如一个SQL我解析后首先判定SQL类型,通过截取SQL的token,截取出来可能是SELECT.DELETE.UPDATE.INSERT.ALTER等等,但是都是字符串,此时我想用枚举就不行了,我要将字符串转换成枚举怎么转呢,类似的情况还有从数据库取出数据根据一些类型做判定,从页面传入数据,根据不同的类型做不同的操作,但是都是字符串,不是枚举,悲剧的是我很少

高阶Java-Java枚举类型enum应用详解

java的Enum枚举类型终于在j2se1.5出现了.之前觉得它只不过是鸡肋而已,可有可无.毕竟这么多年来,没有它,大家不都过得很好吗?今日看<Thinking in Java>4th edition,里面有一句话"有时恰恰因为它,你才能够"优雅而干净"地解决问题.优雅与清晰很重要,正式它们区别了成功的解决方案与失败的解决方案.而失败的解决方案就是因为其他人无法理他."使用Enum枚举类型,可以将以前笨拙的代码变得优雅简单?但是,我同时也在思考另外一个问

class-JPA中枚举类型的变化为什么如果是用序号声明的就有可能产生错误,而如果如果用字符串就不会呢?

问题描述 JPA中枚举类型的变化为什么如果是用序号声明的就有可能产生错误,而如果如果用字符串就不会呢? 枚举类型的变化为什么如果是用序号声明的就有可能产生错误,而如果如果用字符串就不会呢? 解决方案 http://www.360doc.com/content/10/0925/12/1704901_56212305.shtml 解决方案二: 不明白你的需求是什么意思,枚举类定义需要遵守枚举定义的规则的.

介绍Java语言中枚举类型及如何定制Enum类型的定义

Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成http://www.aliyun.com/zixun/aggregation/30537.html">独一无二的类型描述符,在这一点上和常量的定义相似.不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围. 举个例子来说明一下,如果希望为彩虹描绘出七种颜色,你可以在 Java 程序中通过常量定义方式来实现. 清单 1

枚举类型enum

enum枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量说明为整型,字符型或其它类型显然是不妥当的.为此,C语言提供了一种称为"枚举"的类型.在"枚举"类型的定义中列举出所有可能的取值,被说明为该"枚举"类型的变量取值不能超过定义的范围.应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型. enum是枚举型

Java枚举类型enum

枚举的语法1.Enum的全称为enumeration,中文俗称枚举类,学过C/C++等语言的人,应该都对它略知一二.    但在Java语言规范中,是在JDK 5版本中才引入的,存放在 java.lang 包中.在Java版的Enum实质是语法糖,其声明方式如下: [代码1] package com.enumtest; public enum Color { RED,BLUE,BLACK,YELLOW,GREEN //注意这里可以没有分号 }   enum是用来声明枚举的关键字,声明定义的类都隐

浅析Java编程中枚举类型的定义与使用_java

定义枚举类型时本质上就是在定义一个类,只不过很多细节由编译器帮您补齐了,所以某些程度上,enum关键字的 作用就像是class或interface. 当您使用"enum"定义枚举类型时,实质上您定义出来的类型继承自 java.lang.Enum 类,而每个枚举的成员其实就是您定义的枚举类型的一个实例(Instance),它们都被默认为 final,所以您无法改变它们,它们也是 static 成员,所以您可以透过类型名称直接使用它们,当然最重要的,它们都 是公开的(public). 举个

深入解析Swift编程中枚举类型的相关使用_Swift

枚举是由用户定义的数据类型的一组相关值.关键字 enum 用来定义枚举数据类型. 枚举功能枚举在 swift 也类似于 C 和 Objective C 中结构类型 它是在一个类中声明,其值是通过该类的实例来访问 初始成员值是用枚举初始化定义的 其功能也扩展确保标准的协议功能 语法枚举引入 enum 关键字和一对大括号内将它们定义: 复制代码 代码如下: enum enumname {    // enumeration values are described here } 例如,可以为星期定义