Неправильное присвоение значений в перечислении
Я играл с перечислениями и пытался воспроизвести некоторые примерыиз этого стр. Исходные примеры работали как задумано, однако я получил несколько интересных результатов со следующим кодом:
#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
, без одинарных кавычек, и это работает. Тем не менее, я хочу знать, что происходит за кулисами, и как я могу контролировать, какое значение не однозначных цифр я могу печатать с помощью одинарных кавычек.