Типы данных С++
Переменная – ячейка памяти. Назначение типа определяет размер этой ячейки, какие операции можно выполнять с данной переменной, допустимые значения, которые может принимать переменная.
Классификация типов данных:
- Простые (скалярные) – целые, вещественные, логические (булевские).
- Структурированные – массивы, структуры, объединения, классы.
- Адресные – указатели, ссылки.
Простые типы данных
Целый тип
-
char – целый символьный тип;
-
short int – короткий целый тип;
-
int – целый тип;
-
long int – длинный целый тип.
Каждый из целочисленных типов может быть определён как знаковый (signed) или беззнаковый (unsigned) тип. При отсутствие ключевого слова, по умолчанию принимается знаковый тип.
Вещественный тип
-
float – вещественный тип одинарной точности;
-
doudle – вещественный тип двойной точности;
-
long double – вещественный тип расширенной точности;
Логический тип
-
bool – логический тип данных, принимает значение «истина» (true или 1),
или «ложь» (false или 0).
Тип данных |
Размер, байт |
Диапазон значений |
char |
1 |
-128… +128 |
int |
2/4 |
зависит от системы |
unsigned char |
1 |
0… 255 |
unsigned int |
2/4 |
зависит от системы |
short int |
2 |
-32768… 32767 |
unsigned short |
2 |
0… 65535 |
long int |
4 |
-2147483648… 2147483648 |
unsigned long int |
4 |
0… 4294967295 |
float |
4 |
±(3.4Е-38… 3.4Е+38) |
double |
8 |
±(1.7Е-308… 1.7Е+308) |
long double |
10 |
±(3.4Е-4932… 1.1Е+4932) |
Анализируя данные таблицы, можно сделать следующие выводы:
-
если не указан базовый тип, то по умолчанию подразумевается int;
-
если не указан модификатор знаков, то по умолчанию подразумевается
signed; -
с базовым типом float модификаторы не употребляются;
-
модификатор short применим только к базовому типу int.
Привидение типов (явное и неявное)
Приведением типов называется преобразование значения одного типа к значению другого типа, при этом возможно как сохранение величины этого значения, так и изменение этой величины. Приведение типов также называют преобразованием типов.
При деление двух переменных целого типа результат получится целый. Для получения вещественного результата, необходимо явное преобразование типа.
int a=5; int b=2; float t;
t=a/b (при этом t будет равняться 2)
t= (float)a/b (при этом t будет ровняться 2,5).
На момент вычисления изменили тип переменной а – это и есть явное приведение типов. Приведённый тип указывается в круглых скобках перед переменной.
Неявное преобразование типов используется когда в бинарной операции операнды имеют различные типы. В этом случае компилятор выполняет преобразование типов автоматически, т.е все они приводятся к типу с наибольшим диапазоном значений.
int a=5; float b=2; float t;
t=a/b (результат = 2,5)
При неявном преобразование типов выполняется правило переводов низших типов в высшие для точности представления данных и их непротиворечивости (низший тип – char, высший - long double; см.таблицу).