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中么?? 展开
如:
enum TEST{
a = 1,
b,
c
};
TEST mm = (TEST)4; // 这么做编译器不会报错,但4不是enum TEST中的值。能有方法判断4是否在enum TEST中么?? 展开
3个回答
展开全部
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; 这种强制转换方式,本身就是不太合理的用法。既然是定义了枚举类型,对其类型的变量赋值操作,就应该采用枚举数据。如果确实需要通过其他类型转换到枚举,只能由编程者自行检查,编译器是无法实现的这种检查的。
展开全部
查了些资料, 未果. 不过你这问题不错..
要真的想做到的话么.. 用Assert 来确保..
#include <assert.h>
assert (mm < 你枚举类中的个数n..)
要真的想做到的话么.. 用Assert 来确保..
#include <assert.h>
assert (mm < 你枚举类中的个数n..)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵,这个不能啊,连语法中最基本的关键字都做不到这一点!
char a = (char)12345;
char 关键字比 enum 关键字是不是更关键?
编译器是否该更慎重对待 enum,来个error?
char 的范围超了,编译器也只是一个 warning 啊
何况是 enum 呢
^_^
char a = (char)12345;
char 关键字比 enum 关键字是不是更关键?
编译器是否该更慎重对待 enum,来个error?
char 的范围超了,编译器也只是一个 warning 啊
何况是 enum 呢
^_^
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询