• 关于C++枚举类型enum


    关于C++枚举类型enum

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

    声明形式:

    enum 枚举名 {变量列表}; 
    

    例如:

     enum Weekday{SUN,MON.TUE,WED,THU,FRI,SAT};
    

    定义枚举数据类型变量,例如:

    Weekday myweekday;
    

    (注意数据类型是Weekday而不是enum Weekday)

    二、枚举类型应用说明

    1,枚举元素具有默认数值,它们依次为:0,1,2,3,...。例如上例中SUN的值为0,MON的值为1,TUE为2,...,SAT为6。

    2, 也可以在声明中另行定义枚举元素的值,如:

    enum Weekday{SUN=7,MON=1,TUE,WED,THU,FRI,SAT};
    

    定义SUN为7,MON为1,以后顺序加1,TUE为2,WED为3,...,SAT为6。
    3, 对枚举元素按常量处理,但不能对它们直接赋予常量值。例如,下面的的语句是错误的:

     SUN=7;//SUN是枚举元素,不能直接赋予常量值
    

    如需要将整数附值给枚举变量,应进行强制类型转换,例如:

    SUN=(Weekday)7;//在值前面加(类型)是常用的强制类型转换方法
    

    4,枚举值可以进行关系运算:
    1)可以使用关系运算符来比较两个枚举变量。例如,以下 if 语句判断存储在 myweekday1中的值是否小于存储在 myweekday中的值:
    if ( myweekday1 < myweekday2)
    如果 myweekday1存储的值小于 myweekday2的值,则该语句为 true。否则该语句将为 false。
    2)可以使用整数值而不是符号名称来测试枚举变量。例如,以下两个 if 语句是等效的:

    if  myweekday== MON)
    if ( myweekday == 1)
    

    5, 如果为枚举变量赋值,则它们必须是整数。以下赋值语句将产生错误:
    enum Weekday{SUN=1.1,MON=1.2,TUE=1.3,WED=1.4,THU,FRI,SAT }; //错误

    6, 枚举数据类型的目的之一是符号名称有助于使程序自我解释。但是,这些名称不是字符串,而是数值,所以在输出时,输出的是数字,而不是字符串。例如:

    Weekday myweekday = SUN;
    cout << myweekday;//输出的是0这个数值
    

    输入结果如下:
    输出结果

    7, 枚举值可以赋给整型变量,例如:

    int a;
    a = SUN;//枚举值可以赋给整形变量
    cout << a;
    

    8, 因为枚举数据类型的符号名称与整数值相关联,所以它们可以在 switch 语句中使用,如下面的程序所示:
    题目:口袋中有红,黄,蓝,白,黑5种颜色球若干个。每次从口袋中取出3个不同颜色的球,问有多少种取法?

     #include<iostream>
    using namespace std;
    void transfer(int i)//将相应的数值组合通过switch语句转换为字符串
    {
    	switch (i)
    	{
    	case 0:cout << "red "; break;
    	case 1:cout << "yello "; break;
    	case 2:cout << "blue "; break;
    	case 3:cout << "white "; break;
    	case 4:cout << "black "; break;
    	}
    }
    enum ball {red,yello,blue,white,black};//定义球的枚举类型
    int main()
    {
    	int i, j, k,count=0;
    	for (int i = red; i <= black; i++)
    	{
    		for (int j = i+1; j <= black; j++)
    		{	
    				for (int k =j+1; k <= black; k++)
    				{
    					
    						transfer(i);
    						transfer(j);
    						transfer(k);
    						cout <<endl;
    						count++;
    					
    				}
    		
    		}
    	}
    	cout << count;
    	return 0;
    }
    
    

    运行结果:
    运行结果
    三,总结
    当一个变量有几种可能的取值时,可以将它定义为枚举类型。枚举类型有利于程序的可读性。对枚举元素按常量处理,枚举元素具有默认数值,但不能对它们直接赋予常量值。因为枚举变量是整数,所以也可以使用关系运算符来比较两个枚举变量,并且通常配合switch语句来输出相应的值。

    --不忘初心,不负期许
  • 相关阅读:
    csu1804
    uvalive4513
    poj3264(Sparse-Table 算法模板)
    uva11107(后缀数组)
    poj2774(最长公共子串)
    uvalive4108(线段树)
    hdu5306 Gorgeous Sequence
    bzoj2823: [AHOI2012]信号塔&&1336: [Balkan2002]Alien最小圆覆盖&&1337: 最小圆覆盖
    bzoj3330: [BeiJing2013]分数
    bzoj1283: 序列
  • 原文地址:https://www.cnblogs.com/-believe-me/p/11518382.html
Copyright © 2020-2023  润新知