有没有办法对枚举值进行任何算术运算?
enum Type{Zero=0,One,Two,Three,Four,Five,Six,Seven,Eight,Nine};
main()
{
enum Type Var = Zero;
for(int i=0;i<10;i++)
{
switch(Var)
{
case Zero:
/*do something*/
case One:
/*Do something*/
.....
}
Var++;
}
}
(我知道这个增量是不可能的,但无论如何我们可以将这个变量命名为Var increment?)
答案 0 :(得分:4)
您当然可以转发到int
并返回:
var = (Type) ((int) var + 1);
答案 1 :(得分:1)
是的,您可以在算术运算中使用枚举类型。请尝试以下代码。
if (Two + Two == Four)
{
printf("2 + 2 = 4\n");
}
您可以替换正在使用的for循环,
enum Type i;
for(i=Zero; i<=Nine; i=(enum Type)(i + One))
{
printf("%d\n", i);
}
我一般不会宽恕enums这样的滑稽动作,但对于你的枚举元素是整数的特殊情况,它是有效的。