Встроенные типы и их размеры
Чему вы научитесь:
- выбирать тип переменной под данные: целое число, дробное, символ или «да/нет»;
- задавать начальное значение так, чтобы компилятор ловил потерю части числа;
- защищать значения от случайных изменений с помощью
constиconstexpr; - понимать, где видно имя переменной и сколько она живёт.

Представьте склад, где каждая вещь лежит в своей коробке. На коробке наклейка с именем, чтобы её найти, а сбоку штамп: что в ней можно хранить. Коробка для яиц не годится для молока, а большой предмет не влезет в узкую коробку.
В программе на C++ такая коробка называется переменной — это именованное место в памяти. Наклейка — имя переменной, штамп — её тип, а то, что лежит внутри, — значение. Тип задают при объявлении: он решает, какие значения переменная хранит и как они печатаются. Здесь true выводится как 1:
#include <iostream>
int main() {
int count = 3;
double price = 2.5;
char grade = 'A';
bool ready = true;
std::cout << count << ' ' << price << '\n'; // 3 2.5
std::cout << grade << ' ' << ready << '\n'; // A 1
}Разберём объявление int count = 3; по частям:
int— тип, штамп на коробке: внутри лежит целое число;count— имя, наклейка на коробке;3— начальное значение, то, что положили в коробку сразу.
Дальше в программе имя означает это значение: std::cout << count печатает 3. Тип переменной после объявления не меняется: штамп ставят один раз.
Здесь сравнение с коробкой перестаёт работать. Настоящая коробка бывает пустой, а переменная — нет: в ней всегда лежит какое-то значение, даже если вы его не положили, и такое значение непредсказуемо.
Основные типы
Четыре типа встречаются почти в каждой программе:
int— целое число:42,-7,0;double— число с дробной частью:2.5,-0.1;char— один символ в одинарных кавычках:'A','7';bool— логическое значениеtrueилиfalse:std::coutпечатает их как1и0.
Реже встречаются ещё четыре типа:
long long— целые числа, которые не помещаются вint;float— дробные числа с меньшей точностью, чем уdouble;short— целый тип не длиннееint;long— целый тип не корочеint.
Присваивание
Значение в коробке можно заменить. Для этого пишут имя переменной, знак = и новое значение — такая запись называется присваиванием:
count = 5;кладёт в уже объявленную переменную новое значение: тип остаётся прежним, а старое значение пропадает;count = count + 1;сначала читает текущее значениеcount, прибавляет1и записывает результат обратно, поэтому3превращается в4;=внутри объявления, как вint count = 3;, задаёт первое значение, а=после объявления — это присваивание.
Знак = здесь не равенство из математики. Запись count = count + 1 читается так: «положить в count её значение плюс один».
Размер в байтах
Память компьютера похожа на длинный ряд пронумерованных ячеек. Одна ячейка — это байт, и в ней помещается одно из 256 значений. Коробка-переменная занимает несколько ячеек подряд: чем больше байт у типа, тем шире диапазон чисел, которые в него помещаются.
Каждый тип занимает в памяти своё число байт, и от этого числа зависит, какие значения поместятся в переменную. Размер показывает sizeof. Стандарт C++ точно задаёт только sizeof(char): он всегда равен 1. Остальные размеры зависят от платформы и компилятора:
#include <iostream>
int main() {
std::cout << sizeof(char) << ' ' << sizeof(int) << '\n'; // 1 4
std::cout << sizeof(long long) << ' ' << sizeof(double) << '\n'; // 8 8
}Так эта программа печатает на обычном компьютере и в задачах курса. В четыре байта int помещаются числа примерно до двух миллиардов, а для больших берут long long. На собеседовании часто спрашивают, сколько байт занимает int. Точный ответ: стандарт задаёт только нижнюю границу, а на обычных компьютерах это четыре байта.
Тип литерала
Литерал — значение, записанное прямо в коде. Его тип компилятор определяет по записи:
| Литерал | Тип |
|---|---|
10 | int |
2.5 | double |
2.5f | float |
'a' | char |
true | bool |
Число с точкой — это double, даже без дробной части: 2.0 тоже double. Суффикс f делает литерал float: 2.5f — это float, а не double. Разницу видно по sizeof:
std::cout << sizeof(2.5) << ' ' << sizeof(2.5f) << '\n'; // 8 4Частая ошибка
Символ записан в двойных кавычках:
char grade = "A"; // ✗error: cannot initialize a variable of type 'char' with an lvalue of type 'const char[2]'Это ошибка компиляции. Двойные кавычки создают текст из любого числа символов, а char хранит ровно один символ. Один символ пишут в одинарных кавычках: 'A'.
Главное
- Переменная — именованное место в памяти: у неё есть тип, имя и значение, а тип после объявления не меняется.
- Основные типы —
int,double,charиbool; сколько байт занимает тип, показываетsizeof. count = count + 1;читает старое значение, прибавляет1и записывает результат обратно.- Символ пишут в одинарных кавычках,
'A', а число с точкой, даже2.0, — этоdouble.
Подпишись, чтобы пройти курс
Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.