c++枚举类型的枚举类型的声明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++枚举类型的枚举类型的声明相关的知识,希望对你有一定的参考价值。

参考技术A

enum 枚举类型名 枚举常量表列;
在声明了枚举类型之后,可以用它来定义变量。

weekday workday,week_end;
这样,workday和week_end被定义为枚举类型weekday的变量。
在C语言中,枚举类型名包括关键字enum,以上的定义可以写为
enum weekday workday,week_end;
根据以上对枚举类型weekday的声明,枚举变量的值只能是sun到sat之一。
例如
workday=mon; week_end=sun; 是正确的。 enumsun,mon,tue,wed,thu,fri,sat workday,week_end;
这些标识符并不自动地代表什么含义。
说明:
(1) 对枚举元素按常量处理,故称枚举常量。
(2) 枚举元素作为常量,它们是有值的,C++编译按定义时的顺序对它们赋值为0,1,2,3,…。也可以在声明枚举类型时另行指定枚举元素的值。
(3) 枚举值可以用来做判断比较。
(4) 一个整数不能直接赋给一个枚举变量。

c++ 枚举类型

枚举类型 enum

一、枚举类型的定义

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

Enum 枚举类型名 变量值列表;
  • enum:关键字,指明其后的标识符是一个枚举类型的名字
  • 变量值列表:由枚举常量构成,通常用逗号隔开

【解析】

如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。声明枚举类型用enum开头。

二、枚举类型的应用说明

  • 对枚举元素常按照常量处理,不能对他们赋值

Enum Weekday SUM,MON,TUE,WED,THU,FRI,SAT;     //定义枚举类型
SUM=0;   //SUM是枚举类型,此语句非法
  • 枚举元素具有默认值,依次为:0,1,2,3。。。
  • 声明时可以另行定义枚举元素的值

    Enum Weekday SUM=7,MON=1,TUE,WED,THU,FRI,SAT; //后面从TUE依次为23456
  • 枚举值可以进行关系运算
  • 整数值不能直接赋值给枚举变量,如需将整数值给枚举类型,需要进行强制转换

    例题【书上2-11】

    【问题描述】

    设某次体育比赛的结果有四种可能:WIN,LOSE,TIE,CANCEL,编写程序输出这四种情况

    【分析】

    比赛结果只有这四种,所以可以使用枚举类型来存放比赛结果

    【代码】

    #include
    using namespace std;

    enum GameWIN,LOSE,TIE,CANCEL;

    int main()
    Game gameResult,omit=CANCEL;

      for (int i = WIN; i <= CANCEL; i++)      //隐含类型转换
          gameResult = Game(i);              //显式类型转换
          if (gameResult == omit)
              cout << endl<<"the game was canceled." << endl;
          else 
              cout << "the game was played.     ";    
              if (gameResult == WIN) cout << "we won!!" << endl;
              if (gameResult == LOSE) cout << "we lost.." << endl;
          
      
      return 0;


    技术图片
    技术图片


    三、枚举类型的应用

    例题【书上2-34】

    【问题描述】

    口袋中有红、黄、蓝、白、黑 5种颜色的球若干,每次从口袋中拿出三个不同颜色,问有多少种取法。

    【分析】

    由于球只能是五种颜色之一,故可用枚举类型表示球的颜色。设取出的球为i、j、k,根据题意,i、j、k分别可以有五种取值,且i≠j≠k。可以用穷举法,逐个检验每一种可能的组合,从中找出符合要求的组合并输出。

【代码】

#include<iostream>  
using namespace std;

int print(int x)         //借助函数输出每种结果
    switch (x)
    
        case 0:cout << "RED  "; break;
        case 1:cout << "YELLOW  "; break;
        case 2:cout << "BLUE  "; break;
        case 3:cout << "WHITE  "; break;
        case 4:cout << "BLACK  "; break;
    
    return 0;


int main() 
    enum color  RED, YELLOW, BLUE, WHITE, BLACK ;     //定义枚举类型
    int i, j, k, n = 0;
    for (i = RED; i <= BLACK; i++)
        for (j = i + 1; j <= BLACK; j++)
            for (k = j + 1; k <= BLACK; k++) 
                n++;
                print(i);
                print(j);
                print(k);
                cout << endl;
            
    cout << "共有" << n << "种";
    return 0;

技术图片

以上是关于c++枚举类型的枚举类型的声明的主要内容,如果未能解决你的问题,请参考以下文章

C++ 枚举类型声明可以放在 int main 的前面吗?

枚举类型

C++中的enum枚举

c语言中的布尔类型、枚举类型是个啥概念?

为啥只能在 C++ 类中初始化整数或枚举类型?

C++核心准则C.7:不要在一条语句内声明类或枚举值的同时又定义该类型的变量