Неправильное присвоение значений в перечислении

Я играл с перечислениями и пытался воспроизвести некоторые примерыиз этого стр. Исходные примеры работали как задумано, однако я получил несколько интересных результатов со следующим кодом:

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

Ответы на вопрос(5)

Ваш ответ на вопрос