我正在研究现有项目的代码,我读了这段代码:
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
枚举传递一个整数吗?整数在哪里?怎么保存?
答案 0 :(得分:2)
Score
是C风格的枚举类型。 SCORE_ZERO
等是特定值的名称,但枚举类型的对象可以包含适合该类型的任何值。在这种情况下,它可以保存任何int
值。所以你可以说,例如,
Score temp = 13;
最后一行是创建一个int
值的临时值并返回该临时值。一个冗长的版本看起来像这样:
Score temp = (mg << 16) + eg;
return temp;
假设mg
和eg
中的每一个都符合16位,并将中间游戏和结束游戏分数打包为枚举类型的单个值。