Я играл с перечислениями и пытался воспроизвести некоторые примеры с этой страницы. Первоначальные примеры работали по назначению, однако я получил несколько интересных результатов со следующим кодом:
#include <iostream>
enum num : char {
zero = '0',
one = '1',
two = '2',
three = '3',
four = '4',
five = '5',
six = '6'
};
int main()
{
const char two = '2';
std::cout << two << std::endl;
std::cout << num::two;
return 0;
}
Вывод:
2
50
Я ожидал, что оба результата будут одинаковыми, но num::two
, похоже, напечатает другое значение. Также это значение не меняет (50)
, поэтому я предполагаю, что это не случайное/мусорное значение, и есть какой-то метод char/int, который я не понимаю? Вот ссылка ideone.
Я знаю, что я могу заставить его работать, назначив таким образом zero = 0
, без одинарных кавычек, и он работает. Тем не менее, я хочу знать, что происходит за кулисами, и как я могу контролировать то, что не единственное значение цифр, которое я могу распечатать с помощью одинарных кавычек.