Связь int и char C++

218
01 июля 2018, 10:20

Здраствуйте! Проводил несколько опытов, и увидел, что когда читаешь цифру из чаровой строки, то число ровно на 48 больше чем эта цифра. Правда ли это, и почему?

Answer 1

Посмотрите таблицу символов ASCII.

В этой таблице можно увидеть, как каждый символ представляется числом. Для буквы 'a' это 97, а для '0' - 48. Соответственно, '1' - 49 и т.д.

Сам же тип char обычно имеет размер 1 байт с диапазоном значений от -128 до 127, что позволяет хранить один символ. Конкретные диапазон значений и размер зависят от платформы.

Answer 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);

не является переносимым кодом

READ ALSO
подключение к mysql visual studio 2017

подключение к mysql visual studio 2017

Пытаюсь соединить проект c++ и mysqlСделал все что указано в инструкции https://kildekode

240
Свой тип данных

Свой тип данных

Помогите создать свой тип данных с использованием перегрузкиЯ пытался сделать следующее:

239
Явное подключение библиотеки DLL С++ WINAPI

Явное подключение библиотеки DLL С++ WINAPI

Всем добрый вечер, в общем пытаюсь разобраться с явной загрузкой DLL к проекту и столкнулся с проблемойПрограмма не компилируется, а отладчик...

351
Очередь, указатель, for_each

Очередь, указатель, for_each

Здраствуйте, есть класс очереди на основе односвязного списка, в случае, если find возвращает false или использования swap почему-то не выводятся...

264