Здраствуйте! Проводил несколько опытов, и увидел, что когда читаешь цифру из чаровой строки, то число ровно на 48 больше чем эта цифра. Правда ли это, и почему?
Посмотрите таблицу символов ASCII.
В этой таблице можно увидеть, как каждый символ представляется числом. Для буквы 'a' это 97, а для '0' - 48. Соответственно, '1' - 49 и т.д.
Сам же тип char обычно имеет размер 1 байт с диапазоном значений от -128 до 127, что позволяет хранить один символ. Конкретные диапазон значений и размер зависят от платформы.
Правда то, что int('1' - '0') == 1. Какое значение имеет символ '0', зависит от реализации. Т.е. можно инициализировать строку символами_цифрами следующим образом
string s(10, ' ');
for (int i = 0; i < 10; ++i)
s[i] = ('0' + i); //'0', '1'... ( isdigit(s[i]) == true; )
а вот инициализация следующим образом:
for (int i = 48, j = 0; j < 10; ++i, ++j)
s[j] = char(i);
не является переносимым кодом
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости