C++ предоставляет следующие фундаментальные типы данных.
Void
void является типом данных с пустым набором значений.
Является незавершённым и не может быть установлен для объектов и переменных. Однако, позволяется использовать указатели на тип void, а также использовать void в качестве значения, возвращаемого функциями.
Nullptr
nullptr - особый тип данных, который сам себе не является типом как таковым, поскольку его нельзя установить в качестве типа переменной, но он может использоваться в качестве нулевого указателя.
Данный тип был введён в стандарте С++11 вместо определяемой реализацией нулевой макроконстанты NULL.
Boolean
bool - логический тип данных, которые принимает значение true или false .
Размер памяти, которую занимает данный тип данных может отличаться от 1 в зависимости от реализации в целевой системе. Определить размер можно с помощью оператора sizeof(bool).
Символьные типы
char - Символьные типы используются для представления текстовых символов.
Размер символьного типа char 1 байт, что позволяет содержать 256 различных символов. Представление всех символов можно найти в таблице символов ASCII.
Символьные типы данных делятся на три типа:
- signed char - знаковый тип
- unsigned char - беззнаковый тип
- char - отдельный тип, который может быть как знаковым, так и беззнаковым, в зависимости от того, как отработает код компилятор.
Различие в диапазоне значений, например:
- char от -128 до 127
- unsigned char от 0 до 255
char может использоваться для хранения целочисленных значений, которые не превышают одного байта, но лучше использовать для целочисленных значений всё-таки тип Int. Но такое допустимо для встраиваемых систем, с жёстко ограниченным объёмом памяти.
Также имеются особые типы символьных данных:
- wchar_t - тип для представления символов, которым недостаточно одного байта. Это может быть 32 бита для ОС, поддерживающих UNICODE, или 16 бит в нотации Windows для UTF-16.
- char16_t - тип для представления UTF-16, введён в стандарте C++11 .
- char32_t - тип для представления UTF-32, введён в стандарте C++11 .
Int
int - целочисленный тип данных.
Могут использоваться модификаторы, определяющие размер памяти, выделяемый под этот тип данных. Если нет модификаторов, то гарантируется, что размер типа данных не менее 16-ти бит. Однако, на большинстве 32/64 разрядных систем гарантируется, что занимаемый размер не менее 32-х бит.
Модификаторы
Знаковые модификаторы
- signed - представление знакового типа данных (если опущено, то подразумевается по умолчанию)
- unsigned - представление беззнакового типа данных.
Модификаторы размера
- short - целевой тип оптимизируется, чтобы размер был не менее 16 бит
- long - целевой тип оптимизируется, чтобы размер был не менее 32 бит
Модификатор long можно применять к типу данных дважды, что даёт оптимизацию занимаемого переменной пространства не менее 64 бит. Данная оптимизация введена в стандарте C++11.
long long int
Модификаторы размера и знаковости можно также комбинировать.
signed long long int
Типы данных с плавающей точкой
- float - 32-х разрядный тип данных с плавающей точкой.
- double - 64-х разрядный тип данных с плавающей точкой.
- long double - расширенный тип данных с плавающей точкой, введён в стандарте C++11.
Кстати, при разработке программного обеспечения можно заметить по использованию этих типов данных, какой разработчик начинал с чистого C, а какой начинал с C++. Поголовное использование float характерно для разработчиков, которые начинали с C, double же характерен для C++ разработчиков.