Why can two different enum enumeration-constants have the same integer value?

前端 未结 5 1169
半阙折子戏
半阙折子戏 2021-01-31 14:08

I know that if I defined an enum weekday like this:

enum weekday {
    MON,
    TUE,
    WED,
    THU,
    FRI,
};

Then, MON would internally e

5条回答
  •  一个人的身影
    2021-01-31 14:31

    C enums are "really" integers -- not just because they happen to be implemented that way, but because the standard defines enum types to have integer values. So the value of today is "really" 0. All that has happened is that you've created two different names for the value 0.

    I suppose then that the answer to "is today MON or TUE" is "yes" ;-)

    The language doesn't stop you because occasionally it's useful for an enum to have multiple names for the same value. For example:

    enum compression_method {
        COMP_NONE = 0,
        COMP_LOW = 1,
        COMP_HIGH = 2,
        COMP_BEST = 2,
        COMP_FASTEST = 0,
    };
    

提交回复
热议问题