Неправильное преобразование типов c++ (через стек)

Пушу в стек чар, содержащий число. После чего, создаю инт переменную, в которую попаю это самое число. В итоге оно сильно каверкается. Ниже приведу код самого попа и пуша. (здесь на выходе получаю 53)

StackList<char> stack;
char number = '5';
stack.push(number);
int checking = stack.pop();
cout << checking << endl;
template <typename T>
void StackList <T> :: push (T x) {
    if (isEmpty())
    {
        head = new Node<T>(x);
        size++;
    } else
    {
        Node<T> *current = new Node<T> (x);
        current -> next = head;
        head = current;
        size++;
    }
}
template <typename T>
T StackList<T> :: pop () {
    if (!head)
    {
        return -1;
    }
    else
    {
        Node <T> *temp = head;
        head = temp -> next;
        T x = temp -> data;
        delete temp;
        size--;
        return x;
    }

}

Ответы (1 шт):

Автор решения: Герман Борисов
char number = '5';

Данная команда помещает в переменную не число 5, а код, который соответствует символу «5». В данном случае ASCII-код символа «5» - 53.

Так что у вас ничего не коверкается, а работает именно так, как и задумано авторами языка.

→ Ссылка