Типы данных
Представление данных связано с их типом. Концепция типа данных основывается на следующих положениях:
-
Все данные, а также результаты вычисления выражений или функции должны иметь определенный тип.
-
Каждая операция или функция требуют аргументов фиксированного типа и выдают результат фиксированного типа. Если операция допускает аргументы нескольких типов, то тип результата можно определить по специальным правилам языка.
Тип информационного объекта:
определяет:
-
внешнее представление объекта на языке программирования;
-
внутреннее представление объекта в памяти ЭВМ;
-
требуемое для объекта количество памяти при ее начальном распределении;
-
множество значений, которые могут принимать величины этого типа;
-
способ доступа к элементам составных данных;
-
совокупность операций и функций, которые можно применять к величинам этого типа;
-
интерпретирует двоичные коды значений при последующих обращениях к информационному объекту;
-
используется для контроля типов с целью обнаружения возможных случаев недопустимого присваивания.
Таблица 4.2 Базовые типы в С++:
-
название типа
нижняя граница диапазона
верхняя граница диапазона
точность десятичн . разрядов
размер в байтах
bool
false
true
1
char
signed char
-128
127
1
unsigned char
0
255
1
short short int
signed short
-32 768
32 767
2
unsigned short
0
65 535
2
int
signed int
long
long int
signed long
-2 147 483 648
2 147 483 647
4
unsigned int
0
4 294 067 295
4
unsigned long
0
4 294 067 295
4
float
-3.4*1038
3.4+1038
7
4
double
-1.7*10308
-1.7*10308
15
8
void
void *
4
Таблица 4.3 Константы с предельными значениями диапазонов типов
-
<limits.h>
CHAR_MAX CHAR_MIN
UCHAR_MAX
SHRT_MAX SHRT_MIN
USHRT_MAX
INT_MAX INT_MIN
UINT_MAX
<float.h>
FLT_MAX FLT_MIN
DBL_MAX DBL_MIN
LDBL_MAX LDBL_MIN
127 -128
255
32767 -32768
65535
2 147 483 647 -2 147 483 648
4 294 967 295
3.40282e+038 1.17549e-038
1.79769e+308 2.22507e-308
1.79769e+308 2.22507e-308
Статическая типизация (C, C++, Java) предполагает, что тип значения информационного объекта можно определить по его виду или описанию и для переменных он остается неизменным.
Динамическая типизация (РНР, Perl) предполагает, что тип значения информационного объекта определяется присвоенным или выработанным им значением в момент присваивания (выработки), может быть определен по его значению и для переменных изменен в процессе выполнения программы.
Язык программирования должен обладать средствами, которые позволят:
-
иметь стандартные (предопределенные) типы данных;
-
иметь возможность описания новых (пользовательских) типов данных:
- простых неструктурированных (путем перечисления значений, указания интервалов значений и т.п.);
- структурированных (обладать средствами, позволяющими строить последовательности и наборы данных: массивы, структуры, файлы и т.д.).
В большинстве случаев новые типы данных определяются с помощью ранее определенных типов. Если значение нового типа имеет всего одну компоненту, принадлежащую ранее определенному типу, то новый тип называется простым (базовым). Если значения нового типа данных представляют собой совокупность значений компонент, принадлежащих к определенным ранее типам компонент, то новый тип называется структурированным.
Характеристиками структурированного типа являются:
-
множественность элементов,
-
его структура,
-
способ доступа к элементам,
-
тип элементов,
-
операции с данными этого типа.