最近我遇到了几个C和C++中的“标志位”示例,但我并不完全理解它们是如何工作的。在查看一些源代码后,我注意到通常标志值以十六进制定义,例如以下内容:
FLAG1 = 0x00000001,
FLAG2 = 0x00000010,
我的直觉告诉我这些值正在被组合。标志是否通过将所有标志值组合成一个int来工作?如果我像这样同时使用它们FLAG1 | FLAG2
,结果会是0x00000011
吗?
我需要创建带有位偏移量的枚举还是可以使用升序整数,例如:
FLAG1 = 1;
FLAG2 = 2;