Перечислим сомнения? - PullRequest
       7

Перечислим сомнения?

4 голосов
/ 16 апреля 2010

Есть ли какой-нибудь возможный способ сделать какие-либо арифметические операции над значениями перечисления?

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 ]

4 голосов
/ 16 апреля 2010

Вы можете просто привести к int и обратно, конечно:

var = (Type) ((int) var + 1);
1 голос
/ 16 апреля 2010

Да, вы можете использовать типы enum в арифметических операциях. Попробуйте следующий код.

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

Я не одобряю подобные выходки для перечислений вообще, но для вашего конкретного случая, когда элементы перечисления являются целыми числами, это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...