Я обнаружил, что перечисление определяется таким образом, и не могу понять, почему они помещают туда ведущий ноль .
enum SquareDelta {
DELTA_SSW = -021,
DELTA_SS = -020,
DELTA_SSE = -017,
DELTA_SWW = -012,
DELTA_SW = -011,
DELTA_S = -010,
DELTA_SE = -07,
DELTA_SEE = -06,
DELTA_W = -01,
DELTA_ZERO = 0,
DELTA_E = 01,
DELTA_NWW = 06,
DELTA_NW = 07,
DELTA_N = 010,
DELTA_NE = 011,
DELTA_NEE = 012,
DELTA_NNW = 017,
DELTA_NN = 020,
DELTA_NNE = 021
};
Думаю, это не просто обычное целое перечисление, но что это такое? может ли это быть шестнадцатеричное число, начинающееся с «0x»?
Эти числа являются восьмеричными константами. (Числа, начинающиеся с 0
, но не с 0x
, рассматриваются в base-8).
Таким образом, -021 == -17, -020 = -16 и т. Д.
Это восьмеричные литералы, и поэтому они начинаются с 0.
Что более интересно & amp; Реальный вопрос для меня:
Зачем использовать октальные литералы в качестве значений перечисления?
Вероятно, потому что каждый бит этих восьмеричных литералов указывает на что-то. Трудно понять, что, просто увидев перечисление и отсутствие контекста, где он используется, но вам нужно подумать об этом в этом направлении, и, возможно, это будет иметь для вас больше смысла.
Это 8-значные ( Редактировать: слово восьмеричное :)) числа.
a) Литеральные константы, начинающиеся с 0, являются восьмеричными (цифры от 0 до 7)
b) Фактические числа допускают некоторую арифметику, например, N = 10 + 2 * (E = 1) = 12 ( NEE).
Но так как NE> N & amp; NW> N, оно не отражает направление в круге, поэтому оно, возможно, имеет ограниченную помощь, как слово «SquareDelta» для меня. Возможно, это имеет больше смысла в контексте.