最近我在 C 和 C++ 中遇到了几个“标志”的例子,我不太明白它们是如何工作的。在查看了一些源代码后,我注意到标志值通常以十六进制定义,如下所示:
FLAG1 = 0x00000001,
FLAG2 = 0x00000010,
我的直觉表明这些价值观正在被结合起来。标志是否通过将所有标志值组合成一个 int 来工作?如果我同时使用这两种方法FLAG1 | FLAG2
,结果会是0x00000011
什么?
我是否需要创建具有位偏移的枚举,或者我可以使用升序整数如:
FLAG1 = 1;
FLAG2 = 2;