我正在阅读a中的代码JsonParser,我想知道这个枚举是如何工作的:
enum JsonTag {
JSON_NUMBER = 0,
JSON_STRING,
JSON_ARRAY,
JSON_OBJECT,
JSON_TRUE,
JSON_FALSE,
JSON_NULL = 0xF
};
Run Code Online (Sandbox Code Playgroud)
这是否意味着NULL定义为半字节1111?
这是否意味着,中间的每一个值NUMBER,并NULL会之间0和0xF?
这是否意味着NULL某种内存位置?
什么会的价值STRING,ARRAY......是什么?
为什么用这种方式声明枚举?
这很简单.可以显式指定或隐式定义枚举值.如果明确指定 - 就像JSON_NULL在您的示例中一样 - 它们只是具有此值.在这种情况下它是15.(不知道为什么在这里使用花式十六进制表示法).
当隐式分配时,它们总是等于先前的枚举值+ 1,第一个值被设置为0.
而且,以防万一,那里定义了全名.不NULL,但是JSON_NULL,不是NUMBER,但JSON_NUMBER等等