C++枚举类型介绍

本文主要介绍C/C++语言中枚举类型(enum)。

1. 概述

1.1 what

枚举类型(enumeration)是C++语言的一种派生数据类型,它是由用户定义的若干枚举常量组成的集合。

如果一个变量只有几种可能的值,那么可以将其定义为枚举类型。所谓“枚举”,是指将变量的值一一列举出来,变量只能在列举出来的值的范围内进行取值。

1.2 how

使用关键字 enum 创建枚举类型。枚举类型的一般形式如下:

enum 枚举名
{ 
    标识符[ = 整型常数],
    标识符[ = 整型常数],
    ...
    标识符[ = 整型常数]
} 枚举变量;

说明:

  • 这里需要注意枚举类型的定义形式:每一行枚举常量末尾以逗号“,”结尾;最后一行没有标点符号
  • 通常,在我们使用 enum 类型时,都会为定义的枚举类型设置一个保留位,便于后续对该枚举类型进行扩展,这个保留位通常会由最后一个枚举常量充当;
  • 在没有进行初始化(即省掉“=整型常数”)时,枚举类型中的一个标识符的值为 0 。

2. 示例代码

这里有一个简单的枚举类型的示例代码(enum_reserved.cpp):

#include <iostream>

using namespace std;

enum eDemoEnum
{
    some1,
    some2,
    some3,
    some4,
    somen = (int)(((unsigned int)(-1))/2)
};

int main()
{
    int nMaxInt = (unsigned int)(-1);
    int nReserved = (int)(((unsigned int)(-1))/2);
    
    cout << "some1 is: " << some1 << endl;
    cout << "some2 is: " << some2 << endl;
    cout << "somen is: " << somen << endl;
    
    cout << "(unsigned int)(-1) is: " << (unsigned int)(-1) << endl;
    cout << "nMaxInt is: " << nMaxInt << endl;
    cout << "nReserved is: " << nReserved << endl;

    return 0;
}

编译并运行上述代码,结果如下:


通过上述示例我们可以知道:

  • 枚举类型中的枚举常量,默认情况下从 0 开始计数;而后面的枚举常量的值依次递增;
  • “(unsigned int)(-1)”取值为 4294967295(232-1),但是如果将其直接赋值给 int 类型的变量时,其会转换为 int 类型的值 -1 。而在使用“(unsigned int)(-1)”进行运算(如本例中的除法)后,再进行 int 类型转换,就没有问题了。所以,我们平时在使用类型转换时,需要特别注意这些细节;
  • 本例中我们使用“(int)(((unsigned int)(-1))/2)”的值对应的枚举常量 somen 作为枚举类型 eDemoEnum 的保留位。


猜你喜欢

转载自blog.csdn.net/liitdar/article/details/80599446
今日推荐