Разбирая переменные, как объект, мы касались вопроса памяти и говорили о том, что определение переменной позволяет выделить часть оперативной памяти (RAM) под нужды этой самой переменной.
У памяти компьютера есть наименьшая единица — бит. Внутри бита может содержаться только 2 значения: 0 или 1.
Некоторые учебные пособия, а так же популярный курс Гарварда по основам программирования CS50 проводит параллель от бита к лампочке. Лампочка либо горит — значение 1, либо не горит — значение 0.
Курс CS50 можно найти на просторах YouTube.
Просмотр случайного сегмента памяти покажет вам примерно следующее: 0100001011100001100011001.... и т.д.
Организация памяти выполнена в виде блоков, объединенных друг с другом последовательно и называемых адресами памяти.
Адреса позволяют получить доступ к определенному месту внутри памяти.
Архитектура современных компьютеров построена так, что каждый бит не имеет собственного уникального адреса. На это есть две причины. Во первых такой способ доступа к данным редко бывает нужен. А во вторых, количество адресов памяти ограничено.
Каждый адрес памяти содержит 1 байт данных.
Байт — это объединенная в единое целое группа из битов.
В 1 байте данных, согласно современному стандарту, 8 битов, которые расположены последовательно.
Чаще всего, в С++ программист работает с данными в виде байтов.
Типы данных
В С++ типы данных используются для того, чтобы компилятор знал как ему интерпретировать данные в памяти. За время написания моих статей, те кто их читал их регулярно, успели многократно познакомиться с целочисленным типом данных — int
Когда мы объявляем переменную с целочисленным типом, мы тем самым говорим компилятору: используй часть памяти, которую ты зарезервируешь для этой переменной, как для целочисленного значения.
В тот момент, когда вы присвоите объекту значение, компилятор вместе с центральным процессором займутся кодированием вашего значение в соответствующую последовательность битов. После окончания кодирования, значение будет сохранено в памяти.
В тот момент, когда вы решите вычислить объект, чтобы получить из него значение, последовательность битов будет восстановлена до исходного значения, то есть перекодирована обратно. И вы получите исходное значение для последующих действий.
Так как компилятор делает всю важную работу за вас и вам нет нужды беспокоиться о том, как типы данных будут преобразовываться в последовательность битов и обратно. Все что вам нужно регулярно делать, работая с ЯП C++ — это выбирать тип данных для объектов, которые будет лучше всего соответствовать требованиям к этому объекту.
Но и здесь, создатели языка, позаботились о вас и реализовали в С++ основные типы данных.
Основные типы данных
В С++ реализована встроенная поддержка большого количества разных типов данных. В процессе изучения академической литературы и источников в интернете вы можете встретить различные их наименования: базовые/примитивные/встроенные типы данных.
В следующих статьях мы коснемся каждого из базовых типов данных, перечисленных ниже.
Целочисленные типы данных:
short
int
long
long long
Эти типы данных включают в себя целые положительные или отрицательные числа, в том числе 0.
Вещественный тип данных или числа с плавающей точкой (запятой):
float
double
long double
Эти типы данных позволяют реализовать числа с дробной частью.
Символьные типы данных (целое число):
char
wchar_t
char8_t (C++20)
char16_t
char32_t
Эти типы данных могут хранить один символ текст (буквенный символ).
Логический тип данных:
bool
Хранит значение true (истина) или falce (ложь)
Отсутствие типа:
void
Для наглядности добавлю изображение с описанием базовых типов данных:
Вы можете заметить, что на картинке выше есть один тип данных, который я не упомянул, описывая базовые типы. Это нулевой указатель. Я не буду рассматривать его в статьях по типам данным, так как логичнее разбирать его в теме указателей.
И еще, оставлю две ссылки на страницы с официальной документацией по типам данных:
Система типов в С++
Встроенные (базовые) типы С++
Почитайте на досуге, документацию читать полезно и важно!
Спасибо за внимание.
Понравился материал? Оставляйте лайки и комментарии.
Подписывайтесь на канал, чтобы не пропустить выход новых статей.