enum详解

定义:一种创建符号常量的方式。
从它的定义中可以看出,enum就是用来定义常量的。与从const不同的是:它是一个常量集合,包含多个常量值。

For example: 

  enum color
	{
		red,
		green,
		yellow,
		blue
	};

也就是说,对于color这个常量,可以取red, green, yellow, blue这四个值。它们对应整数值0,1,2,3。这些常量叫做枚举量。在默认情况下:将整数赋给枚举量,第一个枚举量的值为0,第二个枚举量的值为1, 后面的以此类推。

当然,也可以自定义它们对应的整数值。如下面的方式:

   enum color
	{
		red,
		green = 10,
		yellow = 20,
		blue
	};
在这种方式定义中:red对应的整数值依然为0,而green和yellow由于已对其赋值,所以原来的默认值被覆盖,而对于blue,其值也就是在yellow对应的

整数基础上加1,即21。

缺陷:在枚举中定义的常量和定义枚举的作用域相同,而不是属于枚举本身。

For example: 

  color col = red;	//正确
	col = ::green;		//正确
	col = color::blue;	//错误
也正是由于这种缺陷:使得枚举中的常量值不能在同一文件中重复定义。

For example: 

 enum test1
	{
		first,
		second = 10
	};

	enum test2
	{
		first,
		second,
		third
	};

这时编译程序就会提示:error: conflicting declaration 'second'。

注意:由于枚举量是整型,所以也可被提升为int类型,但是int类型不能自动转换为枚举类型。

For example:

        int num = green;
	int m = red + 10;
这两种方式都是合法的!
占用的存储空间:看到这种定义方式,不免有点手痒,想测试一下它的sizeof()的值。不错,结果是有点意外;输出结果为4(GCC编译器)。为什么呢?这与具体的编译器有关:对于取值范围较小的枚举,使用一个字节或更少的空间就足矣。然而,对于包含long类型的枚举,则使用4个字节。
应用:

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

enum color
{
        red,
        green,
        yellow,
        blue
};

int main(void)
{
    int id;
    cout << "Please input the number of color:";
    cin >> id;

    switch (id)
    {
        case red:
            cout << "You choose red!"<< endl;
            break;
        case green:
            cout << "You choose green!"<< endl;
            break;
        case yellow:
            cout << "You choose yellow!"<< endl;
            break;
        case  blue:
            cout << "You choose blue!"<< endl;
            break;
        default:
            ;
    }

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值