如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。
举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!
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();
}
摘自:
http://pcedu.pconline.com.cn/empolder/gj/c/0502/562347.html
分享到:
相关推荐
### C++基础知识总结 #### 一、C++数据和变量的类型及变量作用域 **1. 基本的内置类型** C++提供了一系列基本的内置数据类型,用于存储不同种类的数据。以下是一些常见的类型及其特点: - **布尔型 (`bool`)**:...
12. 枚举(Enumerations):在C++/CLI中可以定义枚举类型,它们在托管代码中表示为System::Enum类型。 13. 类型转换(Type Casts):包括显式和隐式类型转换,以及C++/CLI特有的装箱(Boxing)和取消装箱(Unboxing...
### C++基础知识总结 #### 一、名字空间 **1. 名字空间的定义** 名字空间是用来解决命名冲突的一种机制。在C++中,当多个开发者编写代码时,可能会出现相同的标识符名称,从而导致命名冲突。为了避免这种情况,...
"C++基础知识总结入门级"这个主题涵盖了初学者需要掌握的关键概念,让我们一一展开讨论。 首先,C++的IO系统是程序与用户交互的基础。`C++的IO.txt`可能包含关于iostream库的内容,如cin和cout用于标准输入输出,...
### 枚举类型基础知识 #### 一、引言 在编程语言中,枚举(Enum)是一种非常实用的数据类型,它允许程序员定义一个特定的值集合,并赋予这些值有意义的名称。枚举类型广泛应用于各种场景,比如表示一组固定的状态...
这包括了类型增强,如更严格的类型检查、布尔类型(bool)的引入、真正的枚举类型(enum)以及表达式值的可赋值性。此外,还涉及了输入输出流(cin/cout)的使用,包括格式化输入输出,以及cin和cout的使用细节。 ...
### C++基础知识总结 #### 目录概览 本文档主要涵盖了C++语言的基础知识及其在实际开发中的应用,特别适合于C++的初学者。文档由多个章节组成,包括了C/C++语言特性、面向对象编程基础、内存管理、标准模板库(STL...
### C++基础知识总结 #### 一、C++基础关键字与标识符 C++是一门功能强大的编程语言,它继承了C语言的优点,并在此基础上增加了面向对象等特性。在C++中,关键字是语言预定义的一些特殊标识符,它们具有特定的意义...
《C/C++面试基础知识总结》 C/C++是两种强大的编程语言,它们在软件开发领域有着广泛的应用。面试时,了解这些语言的基础知识是至关重要的。以下是对C/C++面试基础知识的详细解释: 1. **const和static作用**:`...
C++类型增强包含了更严格的类型检查、布尔类型bool、真正的枚举enum以及表达式值可赋值等。输入输出方面,C++通过iostream库提供了cin和cout来进行输入输出操作,并且支持格式化输入输出。函数重载允许函数具有相同...
王桂林老师编写的《C++基础与提高》是一本系统讲解C++编程语言的书籍,其中详细介绍了C++的发展背景、应用领域以及与C语言相比扩展出的新特性。以下是根据书中内容整理出的详细知识点: 1. C++的综述:C++由Bjarne ...
1. **变量与数据类型**:C语言中的基本数据类型包括整型(int)、浮点型(float/double)、字符型(char)等,以及枚举(enum)、指针(pointer)等高级数据类型。 2. **运算符与表达式**:包括算术运算符、比较...
类型增强方面,C++增加了更严格的类型检查、布尔类型(bool)以及真正的枚举类型(enum)。输入输出方面,C++使用了cin和cout来取代C语言中的scanf和printf。函数重载允许函数有相同的名称,只要它们的参数列表不同即可...
二、C++基础知识 C++是C语言的扩展,增加了面向对象编程(OOP)的概念,如类(class)、对象(object)、封装、继承和多态性。 1. 类与对象:类是描述对象属性和行为的数据模板,而对象是类的实例。通过类,我们...
- **枚举类型**:C++提供了真正的枚举类型`enum`,可以指定具体的枚举值。 - **表达式的值可被赋值**:C++允许某些表达式的值可以直接被赋值,如通过引用返回的对象。 ##### 2. 输入与输出(`cin/cout`) - **基本...
6. **C++20**:最新的标准,引入了模块化、 Concepts、Coroutines、Concepts、强类型enum的默认构造函数等新特性,使C++更加现代化和强大。 CHM(Compiled Help Manual)文件是一种微软的HTML帮助文件格式,它将多...
以上是C++基础知识的一些关键点,理解并掌握这些概念对于初学者至关重要。通过学习和实践,你可以编写出功能丰富的、高效的C++程序。在进一步深入C++的学习中,你还会接触到STL(Standard Template Library)、异常...
复合数据类型包括数组、结构体、共用体(联合类型union)、枚举类型(enum)以及类类型(class)。C++中的类类型是面向对象编程的核心,它能够定义数据和操作数据的方法。 变量是C++中用于存储值的实体,它在程序...