Типы данных С++

Любая программа в ходе работы обрабатывает данные. Хранение и обработка данных зависит от их типа. Каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип.

Тип данных определяет:

  • представление данных в памяти компьютера;
  • множество значений, которые могут принимать величины данного типа;
  • операции и функции, которые можно применять к величинам этого типа.

Все типы языка C++ можно разделить на основные и составные. Основные типы данных используются для представления целых, вещественных, символьных и логических величин. К составным типам относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.

Основные типы данных

Для описания основных типов данных определены следующие ключевые слова:

  • int (целый);
  • char (символьный);
  • wchar_t (расширенный символьный);
  • bool (логический);
  • float (вещественный);
  • double (вещественный с двойной точностью).

Для уточнения диапазона значений и внутреннего представления стандартных типов применяются четыре спецификатора типа:

  • short (короткий);
  • long (длинный);
  • signed (знаковый);
  • unsigned (беззнаковый).

Типичные размеры значений и диапазоны представлений

ТипРазмер (байт)Диапазон значенийЗамечания
bool1true, false

Внутренняя форма представления значения false - 0. Любое другое значение интерпретируется как true.

signed char1-128 ... 127

Используются для хранения 8-разрядных ASCII-символов либо любых других 8-разрядных значений

unsigned char10 ... 255
signed short int2-32768 ... 32767

Спецификатор signed указывает рассматривать старший бит числа как знаковый (0 - положительное число, 1 - отрицательное). По умолчанию целочисленные типы считаются знаковыми (спецификатор signed можно опускать). При использовании спецификатора unsigned старший разряд рассматривается как часть кода числа, поэтому представляются только положительные числа.

unsigned short int20 ... 65535
signed long int4-2 147 483 648 ...
2 147 483 647
unsigned long int40 ... 4 294 967 295
float43.4e-38 ... 3.4e+38

Типы данных с плавающей точкой. Эти типы хранятся в памяти компьютера иначе, чем целочисленные: представление вещественного числа состоит из двух частей — мантиссы и порядка. Константы с плавающей точкой имеют по умолчанию тип double.

double81.7e-308 ... 1.7e+308
long double3.4e-4932 ... 3.4e+4932

Константам, встречающимся в программе, компилятор приписывает тот или иной тип в соответствии с их видом. Можно явно указать требуемый тип с помощью соответствующих суффиксов:

  • Для целых типов:
    L, l (long) и u, U (unsigned). Например, 50L будет иметь тип long. Суффиксы L и U можно использовать одновременно, например: 105LU.
  • Для вещественных типов:
    F, f (float) и L, l (long). Например, константа 3e+5L будет иметь тип long double, а константа 1.82f — тип float.

Тип void

К основным типам языка С++ относится также тип void. Множество значений этого типа пусто. Он применяется для определения функций, которые не возвращают значения, для указания пустого списка аргументов функции, как базовый тип для указателей и в операции приведения типов.