旗帜枚举:
enum class AbilityFlag
{
FLY = 1 << 0, // 0x01
WALK = 1 << 1, // 0x02
JUMP = 1 << 2, // 0x04
SWIM = 1 << 3, // 0x08
};
但如果它是特定的位,它可以被称为标志吗?
enum class AbilityFlag
{
FLY = 0, // bit no. 0
WALK = 1, // bit no. 1
JUMP = 2, // bit no. 2
SWIM = 3, // bit no. 3
};
或者只有表示位组合的值(如第一个例子中)被称为&#34; flag&#34;?
答案 0 :(得分:2)
第一个示例中的类型称为位字段或标记字段。每个常数由一位表示。这意味着您可以使用按位或运算符组合一个变量中的不同设置,例如ability = WALK | JUMP
。稍后您可以使用按位和来提取单个属性,例如canJump = ability & JUMP
这在您的第二个枚举中是不可能的,其中WALK | JUMP
具有与{{1}相同的值}。
任何这些类型的变量都可以称为标志。通常,术语 flag 用于表示某些属性的任何值的变量值变量。通常,布尔变量用作标志。