C++ 中如何判断变量值是否在enum类型中

在C++中,如何判断一个变量是在enum中。如:enumTEST{a=1,b,c};TESTmm=(TEST)4;//这么做编译器不会报错,但4不是enumTEST中的值... 在C++ 中,如何判断一个变量是在enum中。
如:
enum TEST{
a = 1,
b,
c
};

TEST mm = (TEST)4; // 这么做编译器不会报错,但4不是enum TEST中的值。能有方法判断4是否在enum TEST中么??
展开
 我来答
kaixingui2012
2015-10-26 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6340万
展开全部

C++ 中判断变量值是否在enum类型中,可以用enum的最小成员和最大成员与该变量比较,超出区间,则说明不在该类型中。

参考代码:

#include<stdio.h>
enum TEST {a=1,b,c,d,e} ;
int main()
{
    TEST x = (TEST)10;
    if ( x<a || x>e ) //检查是否在a-e中
        printf("exceed !\n");
    else
        printf("ok!\n");
    return 0;
}

TEST x = (TEST)10;  这种强制转换方式,本身就是不太合理的用法。既然是定义了枚举类型,对其类型的变量赋值操作,就应该采用枚举数据。如果确实需要通过其他类型转换到枚举,只能由编程者自行检查,编译器是无法实现的这种检查的。

蒋之世v3rse
2010-05-26 · 读书、思考、践行、认知提升
蒋之世v3rse
采纳数:47 获赞数:117

向TA提问 私信TA
展开全部
查了些资料, 未果. 不过你这问题不错..
要真的想做到的话么.. 用Assert 来确保..
#include <assert.h>

assert (mm < 你枚举类中的个数n..)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清影星河6A
2010-05-26 · TA获得超过851个赞
知道小有建树答主
回答量:753
采纳率:0%
帮助的人:894万
展开全部
呵呵,这个不能啊,连语法中最基本的关键字都做不到这一点!
char a = (char)12345;

char 关键字比 enum 关键字是不是更关键?
编译器是否该更慎重对待 enum,来个error?
char 的范围超了,编译器也只是一个 warning 啊
何况是 enum 呢

^_^
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式