【C/C++】枚举enum的用法

如果不用enum,用define一般情况也可以实现,那为什么还要enum呢?

举一个简单的例子:比如有一个变量是代表星期几,在程序当中要根据这个变量进行某种操作,如果用define的话代码如下:

#include<bits/stdc++.h>
using namespace std;

#define Monday 1
#define Tuesday 2
#define Wednesday 3
#define Thursday 4
#define Friday 5
#define Saturday 6
#define Sunday 7

int main()
{
    int week=Wednesday;
    switch(week)
    {
        case Monday:cout<<"Today is Monday"<<endl;break;
        case Tuesday:cout<<"Today is Tuesday"<<endl;break;
        case Wednesday:cout<<"Today is Wednesday"<<endl;break;
        case Thursday:cout<<"Today is Thursday"<<endl;break;
        case Friday:cout<<"Today is Friday"<<endl;break;
        case Saturday:cout<<"Today is Saturday"<<endl;break;
        case Sunday:cout<<"Today is Sunday"<<endl;break;
        default:cout<<"WRONG!"<<endl;break;
    }

    return 0;
}

看上去好像也是可以解决问题的,但是在一个大工程中,这样的代码很不美观。而且weekint类型的变量,含义很不明确。对于星期几而言,一共就 7 个情况,那么问题不是很大,但是对于有一些变量,比如说颜色类别错误信息等,不确定个数,甚至会经常增加和删除,如果一直通过define来修改,很容易出错,时间长了之后也很难维护。

来看看用enum的效果

#include<bits/stdc++.h>
using namespace std;

enum Weekday{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};
int main()
{
    Weekday week=Wednesday;
    switch(week)
    {
        case Monday:cout<<"Today is Monday"<<endl;break;
        case Tuesday:cout<<"Today is Tuesday"<<endl;break;
        case Wednesday:cout<<"Today is Wednesday"<<endl;break;
        case Thursday:cout<<"Today is Thursday"<<endl;break;
        case Friday:cout<<"Today is Friday"<<endl;break;
        case Saturday:cout<<"Today is Saturday"<<endl;break;
        case Sunday:cout<<"Today is Sunday"<<endl;break;
        default:cout<<"WRONG!"<<endl;break;
    }

    return 0;
}

注意现在weekWeekday这个 枚举类型 ,就不需要用不同的数字来定义不同的宏来代表不同的类别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值