Кажется, вы путаете di git «3» и число 3.
Когда вы устанавливаете y
равным трем, вы устанавливаете его равным числу три, числу, которое в двоичном формате "11", то есть на единицу больше двух. Это число представлено как «3» в базе 10, но это только один из способов его представления. Вы можете представить его как «III» или «один больше, чем два», если хотите. Это по-прежнему значение 3.
Когда вы выполняете cout << x;
для вывода символа, он не выводит символ с основанием десять. Что бы это вообще значило? Таким образом, нет причин ожидать представления числа три в базе десять, когда вы это сделаете.
Я ожидал увидеть значение «3» внутри строки, но я получил другое значение.
Ваше ожидание необоснованно. Нет никакой связи между выводом символов и тем, как числовые значения представлены в десятичной системе.
Вы действительно получили некоторое представление значения три. Только не di git, которое мы используем для представления значения три в базе 10. Но, опять же, почему вывод символа имеет какое-либо отношение к представлению значений в базе десять? Это процедура вывода символов, а не числовая. Он не пытается представить числовые значения в конкретных числовых базах.
Непрограммисты и нематематики обычно не должны слишком глубоко думать о разнице между значениями и представлениями значений. Но для программистов это жизненно важно, потому что мы выполняем операции с чистыми значениями, а также значениями, которые представляют собой представления значений.
Например, если мы преобразуем число сто в строку, у нас будет переменная значение которой состоит из любых значений, которые система использует для представления цифр «1», «0», «0» в этой последовательности, за которой, вероятно, следует что-то, указывающее на конец строки. Скорее всего, в вашей системе будет сорок девять, сорок восемь, сорок восемь, ноль.