我正在研究现有项目的代码,我阅读了这段代码:
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
枚举并将一个整数传递给它?整数去哪儿了?它是如何保存的?
最佳答案
Score
是 C 风格的枚举类型。 SCORE_ZERO
等是特定值的名称,但枚举类型的对象可以包含适合该类型的任何值。在这种情况下,它可以包含任何 int
值。所以你可以说,例如,
Score temp = 13;
最后一行是创建一个具有 int
值的临时文件并返回该临时文件。详细版本如下所示:
Score temp = (mg << 16) + eg;
return temp;
假设mg
和eg
各占16位,将中局和终局得分打包成枚举类型的单个值。
关于c++ - 返回一个枚举,看不懂这行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35113096/