【问题标题】:Can particular bit number be called flag?特定的位数可以称为标志吗?
【发布时间】:2016-05-05 20:07:36
【问题描述】:

标志的枚举:

enum class AbilityFlag
{
  FLY = 1 << 0, // 0x01
  WALK = 1 << 1, // 0x02
  JUMP = 1 << 2, // 0x04
  SWIM = 1 << 3, // 0x08
};

但是如果是特殊位,可以叫flag吗?

enum class AbilityFlag
{
  FLY = 0, // bit no. 0
  WALK = 1, // bit no. 1
  JUMP = 2, // bit no. 2
  SWIM = 3, // bit no. 3
};

或者只有表示位组合的值(如第一个示例)称为“标志”?

【问题讨论】:

  • 随心所欲地调用它......
  • @LightnessRacesinOrbit:我的意思是如果标志的定义仅指代表相应位的值,或者也指特定的位数。为什么我应该用错误的名字命名东西
  • 您是否考虑过进行一些研究? en.wikipedia.org/wiki/Flag_field

标签: c++ computer-science naming


【解决方案1】:

第一个示例中的类型称为位域标志域。每个常数由一个位表示。这意味着您可以使用按位 or 运算符在一个变量中组合不同的设置,例如 ability = WALK | JUMP。稍后您可以使用按位 and 提取单个属性,例如 canJump = ability &amp; JUMP 这在您的第二个枚举中是不可能的,其中 WALK | JUMPSWIM 具有相同的值。

任何这些类型的变量都可以称为标志。通常,术语 flag 用于表示某些属性的任何离散值变量。通常布尔变量用作标志。

【讨论】:

    猜你喜欢
    • 2018-09-11
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    相关资源
    最近更新 更多