枚举的起始值是0和0x0000之间有区别吗?

时间:2012-10-22 19:01:13

标签: c++ enums

这是否会改变枚举值中存储或增加值的方式?如果它们相同,为什么人们将其定义为0x000?

3 个答案:

答案 0 :(得分:6)

没有区别,它只是一个可读性的东西。例如,它表示枚举值用于某种二进制上下文,例如bitflags。

enum Flags {
    FLAG_NONE   = 0x0000,
    FLAG_READ   = 0x0001,
    FLAG_WRITE  = 0x0002,
    FLAG_APPEND = 0x0004,
    FLAG_TEXT   = 0x0008,
    FLAG_MEMMAP = 0x0010
};

答案 1 :(得分:2)

没有。
0x0000(根据需要追加0)只有十六进制的0 有时枚举中的所有数字都是十六进制的。由于全部都是十六进制的,你只需用十六进制定义第一个十六进制,因为它看起来更干净。

答案 2 :(得分:0)

这些具体值没有区别,它们完全相同。

但是对于其他值,请记住前置0使其成为八进制常量。这意味着您要避免使用000001002010044等值(以保持其长度)常数相等)。