This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

enum data type

my doubt is a general C doubt.. we know if we are using enum the variables which we declare inside automatically increments by one than the previous variable.. but is there any method by which we could make the variables to decrement by one instead of incrementing...

Example

enum my_enum
{ var1=90, var2,var3
};

for this code var2 and var3 will be 91 & 92 respectively, is there any method (possible) to get them 89 & 88...
It was asked in an interview.. any one knows the answer..?

Parents
  • I would either go for explicit numbers in the enumerator, or rearrange the symbols to make use of the normal increment.

    But on the other hand, I normally don't spend too much time debugging, where I need to look at the raw numbers in the debugger.

    If doing embedded, I often try to get a prototype built with extra memory, so I can have a bit of helper info available.

    A trick I do use when playing with enumerators is to:

    /* operators.h */
    T(ADD)
    T(SUB)
    T(MUL)
    T(DIV)
    

    #define T(x) x,
    enum OP { #include "operators.h"
    }; #undef T
    #define T(x) #x,
    char* op_names[] = { #include "operators.h"
    }; op = ADD;
    printf("operator %s\n",op_names[op]);

Reply
  • I would either go for explicit numbers in the enumerator, or rearrange the symbols to make use of the normal increment.

    But on the other hand, I normally don't spend too much time debugging, where I need to look at the raw numbers in the debugger.

    If doing embedded, I often try to get a prototype built with extra memory, so I can have a bit of helper info available.

    A trick I do use when playing with enumerators is to:

    /* operators.h */
    T(ADD)
    T(SUB)
    T(MUL)
    T(DIV)
    

    #define T(x) x,
    enum OP { #include "operators.h"
    }; #undef T
    #define T(x) #x,
    char* op_names[] = { #include "operators.h"
    }; op = ADD;
    printf("operator %s\n",op_names[op]);

Children