开发者

Enum values doubts?

开发者 https://www.devze.com 2022-12-26 21:27 出处:网络
Is there any possible way to do any arithmetic operations on enum values? enum Type{Zero=0,One,Two,Three,Four,Five,Six,Seven,Eight,Nine};

Is there any possible way to do any arithmetic operations on enum values?

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++;
    }
}

(I know that this increment is not possible, but is there anyway by which we ca开发者_StackOverflow社区n have this variable named Var increment?)


You can just cast to int and back, of course:

var = (Type) ((int) var + 1);


Yes, you can use enum types in arithmetic operations. Try the following code.

if (Two + Two == Four)
{
    printf("2 + 2 = 4\n");
}

You could replace the for loop that you are using with,

enum Type i;
for(i=Zero; i<=Nine; i=(enum Type)(i + One))
{
    printf("%d\n", i);
}

I do not condone such antics for enums in general, but for your particular case where the elements of the enum are integers, it works.

0

精彩评论

暂无评论...
验证码 换一张
取 消