#cpp #char
Здраствуйте! Проводил несколько опытов, и увидел, что когда читаешь цифру из чаровой строки, то число ровно на 48 больше чем эта цифра. Правда ли это, и почему?
Ответы
Ответ 1
Посмотрите таблицу символов ASCII. В этой таблице можно увидеть, как каждый символ представляется числом. Для буквы 'a' это 97, а для '0' - 48. Соответственно, '1' - 49 и т.д. Сам же тип char обычно имеет размер 1 байт с диапазоном значений от -128 до 127, что позволяет хранить один символ. Конкретные диапазон значений и размер зависят от платформы.Ответ 2
Правда то, что 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); не является переносимым кодом
Комментариев нет:
Отправить комментарий