В любом языке программирования каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип данных. Тип данных – это множество допустимых значений, которые может принимать тот или иной объект, а также множество допустимых операций, которые применимы к нему. В современном понимании тип также зависит от внутреннего представления информации. Таким образом, данные различных типов хранятся и обрабатываются по-разному. Тип данных определяет: внутреннее представление данных в памяти компьютера; объем памяти, выделяемый под данные; множество (диапазон) значений, которые могут принимать величины этого типа; операции и функции, которые можно применять к данным этого типа. Исходя из данных характеристик, необходимо определять тип каждой величины, используемой в программе для представления объектов. Обязательное описание типа позволяет компилятору производить проверку допустимости различных конструкций программы. От выбора типа величины зависит последовательность машинных команд, построенная компилятором.
Современные языки программирования, как правило, могут иметь набор простых типов, являющихся встроенными в данный язык программирования, и средства для создания производных типов. Объектно-ориентированные языки программирования позволяют определять типы класса. Реализация простых типов данных заключается в способе представления значений данного типа в компьютере и в наборе операций, поддерживаемых для данного типа. Язык программирования C++ поддерживает следующие типы данных:
- Базовые типы, которые предопределены стандартом языка, указываются зарезервированными ключевыми словами и характеризуются одним значением. Их не надо определять и их нельзя разложить на более простые составляющие, оздают основу для построения более сложных производных . К базовым типам относятся:
- целочисленный
- вещественный
- символьный
- логический
- тип void
- Производные типы. Производные типы задаются пользователем, и переменные этих типов создаются как с использованием базовых типов, так и производных и классовых типов.
Производные типы можно разделить на две группы:
- непосредственно производные типы — массивы, перечисления, указатели, ссылки;
- 2) составные производные — структуры, объединения, классы.
Существует четыре спецификатора типа данных, уточняющих внутреннее представление и диапазон базовых типов:
- short (короткий) длина
- long (длинный)
- signed (знаковый) знак (модификатор)
- unsigned (беззнаковый)
Рассмотрим более подробно базовые типы данных. В таблице 1.1 приведены основные типы данных языка С++ с указанием минимально допустимого диапазона значений, определенного стандартами С89 и С99.
Типы данных | Размер в байтах | Минимально допустимый диапазон значений | Комментарий |
Целочисленные | |||
char | 1 | -128÷127 | |
unsigned char | 1 | 0 ÷ 255 | |
signed char | 1 | -128 ÷ 127 | |
int | 2 или 4 | -32768 ÷ 32767 | |
unsigned int | 2 или 4 | 0 ÷ 65535 | |
signed int | 2 или 4 | -32768 ÷ 32767 | |
short int | 2 | -32768 ÷ 32767 | |
unsigned short int | 2 | 0 ÷ 65535 | |
signed short int | 2 | -32768 ÷ 32767 | |
long int | 4 | -2147483648 ÷ 2147483647 | |
long long int | 8 | -(263-1) ÷ (263-1) | добавлен стандартом C99 |
signed long int | 4 | -2147483648 ÷ 2147483647 | |
unsigned long int | 4 | 0 ÷ 4294967295 | |
unsigned long long int | 8 | 0 ÷ 264-1 | добавлен стандартом C99 |
Вещественные | |||
float | 4 | точность мантиссы не менее 6 значащих цифр (типичным является диапазон 3.4Е-38 ÷ 3.4E+38) | |
double | 8 | 1Е-37 ÷ 1E+37 | точность мантиссы не менее 10 значащих цифр (типичным является диапазон 1.7Е-308 ÷ 1.7E+308) |
long double | 10 | 1Е-37 ÷ 1E+37 | точность мантиссы не менее 10 значащих цифр (типичным является диапазон 3.4Е-4932 ÷ 1.1E+4932) |
Логические | |||
bool | 1 | true, false |