Примитивные типы данных в C++

Целочисленные

char (символьный тип данных)
Размер соответствует минимальной адресуемой ячейке (обычно это 1 байт).
Основное применение: хранение символьных данных.
Т.к. 1 байт соответствует 1 символу, то строке соответствует набор символов типа char.
Строки задаются в двойных кавычках: "Text string".

Тип char в языке C++ является особенным: стандарт не оговаривает является ли тип char знаковым или беззнаковым — это зависит от компилятора. Если вам нужна именно беззнаковая версия используйте unsigned char явно, если же вам нужна знаковая используйте signed char. При этом все три типа (char, unsigned char, signed char) являются тремя различными типами.


short int, int и long int
Про размер типа int и его производных в стандарте ничего не указано, однако указано, что short int должен быть меньше int, а int должен быть меньше long int. Это означает, что эти типы могут занимать различное число байт в зависимости от настроек компилятора, ОС, архитектуры процессора.
В большинстве настольных систем тип int занимает 4 байта.


По умолчанию целочисленные типы могут хранить как положительные так и отрицательные значения. В этом случае множество представимых значений вычисляется по формуле -2n-1...(2n-1-1), где n - это число бит. Такая асимметрия происходит из того, что в положительные значения записывается 0.
Целочисленные типа данных могут быть беззнаковыми (unsigned). В этом случае множество представимых значений изменится на 0...(2n-1).

Все целочисленные типы (кроме char) являются знаковыми. Беззнаковые версии типов определяется с ключевым словом unsigned, например: unsigned short int, unsigned int или unsigned long int. Для симметрии в языке предусмотрено явное указание того, что тип является знаковым — ключевое слово signed (используется редко). Более того, C++ допускает использование следующих сокращений:
  • unsigned вместо unsigned int,
  • short вместо short int,
  • long вместо long int.


Значения встроенных типов C++ задаются с помощью литералов. Целочисленные значения можно задавать следующим образом:
  • ’a’ — код буквы ’a’, тип char,
  • 42 — все целые числа по умолчанию типа int,
  • 1234567890L — суффикс ’L’ соответствует типу long,
  • 1703U — суффикс ’U’ соответствует типу unsigned int,
  • 2128506UL — соответствует типу unsigned long.


При определении переменной указывается её тип. При определении можно сразу задать начальное значение (инициализация).
int i = 10; // тип переменной совпадает с типом литерала
short j = 20; // здесь произойдет преобразование встроенного типа, число 20 из типа int преобразуется в тип short (если число окажется больше, чем может вместить тип short, то преобразование может оказаться не специфицированным)
unsigned long l = 123123; // значение типа int и при присваивании оно преобразуется к беззнаковому типу long


Числа с плавающей точкой

float, 4 байта, 7 значащих цифр.
Тип float используют в тех случаях, когда нужно значительно сэкономить на памяти. Например, если нужно хранить массив из миллиарда вещественных чисел, то для нас уже имеет значение размер.


double, 8 байт, 15 значащих цифр.
На практике в большинстве случаев разумно использовать тип double, т.к. погрешность при его использовании будет меньше.


Числа с плавающей точкой:
  • 3.14 — все числа с точкой по умолчанию типа double,
  • 2.71F — суффикс ’F’ соответствует типу float,
  • 3.0E8 — соответствует 3.0 · 108

Определение переменной:
double x = 13.5, y = 3.1415; // не очень удобно использоваться, потому что редактирование кода идет построчно и лучше определять каждую переменную на своей строчке
float z; // плохой тон, т.к. никто не знает какое значение будет у переменной
Нужно всегда инициализировать переменные.


Логический тип данных

bool
Умеет хранить значения типа "ложь" или "истина".
Обычно используется в условных выражениях.
true и false — значения типа bool.

Определение переменной:
bool b = false;


Пустой тип

void
Не хранит никакого значения и используется в тех случаях, когда надо указать тип, но никакого значения нет. Например, если функция не возвращает никакого значения, то тогда указывается тип void.

Нельзя определить переменную пустого типа void.

Комментариев нет:

Отправить комментарий