Enum值得怀疑?

时间:2010-04-16 11:17:14

标签: c enums

有没有办法对枚举值进行任何算术运算?

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?)

2 个答案:

答案 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这样的滑稽动作,但对于你的枚举元素是整数的特殊情况,它是有效的。