返回一个枚举,无法理解代码行

时间:2016-01-31 11:04:37

标签: c++ enums

我正在研究现有项目的代码,我读了这段代码:

enum Score {
  SCORE_ZERO,
  SCORE_ENSURE_INTEGER_SIZE_P = INT_MAX,
  SCORE_ENSURE_INTEGER_SIZE_N = INT_MIN
};

inline Score make_score(int mg, int eg) {
  return Score((mg << 16) + eg);
}

我有一个名为Score的枚举和一个返回Score的函数。我不明白最后一行是什么意思。它是“创建”然后返回一个Score枚举传递一个整数吗?整数在哪里?怎么保存?

1 个答案:

答案 0 :(得分:2)

Score是C风格的枚举类型。 SCORE_ZERO等是特定值的名称,但枚举类型的对象可以包含适合该类型的任何值。在这种情况下,它可以保存任何int值。所以你可以说,例如,

Score temp = 13;

最后一行是创建一个int值的临时值并返回该临时值。一个冗长的版本看起来像这样:

Score temp = (mg << 16) + eg;
return temp;

假设mgeg中的每一个都符合16位,并将中间游戏和结束游戏分数打包为枚举类型的单个值。