Концепция типов данных.Стр 1 из 3Следующая ⇒
Лекция 4 (проектор) С/C++ поддерживают концепцию (соглашение) типов данных, которая включает следующие договорённости: 1. каждая переменная, константа, выражение, функция относятся к некоторому типу; 2. тип объекта либо определяется по внешнему виду, либо задаётся специальным описанием; 3. тип Т определяет множество значений, допустимых для данных этого типа, множество допустимых операций, множество функций, определённых для данных этого типа Т. Тип Т = {Dom(T), OP(T), Fun(T)}+ { некоторая область памяти, её размер, способ представления (формат) значения ,способ обработки данных этого типа} (реализация типа)
~ЗАЧЕМ НУЖЕН ТИП? Описание типа позволяет транслятору проверять допустимость написанных в программе конструкций, а также от типа зависят и машинные команды, которые транслятор использует для описания действий. Все типы можно поделить на =основные (стандартные), они определены в языке и являются простыми типами, т.е. значение этого типа есть скалярная величина; =составные, которые программист может строить сам, на основе стандартных типов, а также ранее определённых составных. Основные стандартные типы данных C++. Целый (int), символьный (char), логический (bool) и вещественный (float,double,long double). Каждому типу соответствует размер памяти, отводимый под значение типа, и формат значения в этой памяти, они не определяются стандартом, а зависят от компьютера и компилятора. Именно отводимый размер и формат определяют множество значений типа. Типы int, char, bool , float, double, long double в С++ называют арифметическими, т.к. данные этих типов можно использовать в арифметических выражениях. int, char, bool называют в С++ целыми, а float, double, long double – вещественными. Внутренние представления данных вещественных типов отличаются от представления целых. Есть ещё спецификаторы типа, которые уточняют размер памяти и внутреннее представление (а значит и диапазон значений): short – короткий; signed - знаковый; long - длинный; unsigned - беззнаковый; Целый тип: Имя типа Размер(байт) Диапазон значений int 4(32разр.МП) -2147483648 ÷ 2147483647 int 2(16разр.МП) short int 2 -32768 ÷ 32767 long int 4 -2147483648 ÷ 2147483647 Все целые типы по умолчанию знаковые (signed м.б. опущены), для беззнаковых (не хранится знак, подразумевается +) необходимо указывать unsigned. unsigned short int 2 0 ÷ 65535 unsigned long int 4 0 ÷ 4294967295 unsigned int 4 0 ÷ 4294967295 Возможные сокращенные записи имён типов: short int ≈ short long int ≈ long signed int ≈ signed Мы уже говорили, что размер переменных типа int является аппаратно-зависимым. Переменные типов long и short, напротив, имеют фиксированный размер, не зависящий от используемой системы. Размер типа long всегда равен 4 байтам и совпадает с размером типа int в случае 32-разрядных систем, подобных Windows. Тип short в любой операционной системе имеет размер, равный двум байтам. Многие компиляторы позволяют определять целые типы с указанием нужной разрядности (в битах). Имена таких типов начинаются с двойного символа подчеркивания:__ int8,__ intl6, __int32, __int64. Тип__ int8 соответствует типу char, типы __intl6 и __int32 — соответственно типу short и паре типов int и long (справедливо как минимум для 32-разрядных систем). Тип__ int64 используется для хранения больших целых чисел разрядностью до 19 десятичных знаков #include <iostream> //pr1 using namespace std; const int n=100; int main() {int i; __int32 k=1; __int64 m; double a[n]; m=k+2; cout<<"m="<<sizeof (m)<<"k="<<sizeof (k)<<endl;//m=8 k=4 return 0;} Операции для целого типа(в порядке убывания приоритета после ;): OP(целый)={+о –о ; * / % ; + - ; << >> ; < <= >= > ; == != } Функции для целого типа: #include<cstdlib> Fun(целый)={abs(x), rand(), srand(a)} rand()-генерирует случайное число 0 ÷ RAND_MAX .(32767) srand(a)- устанавливает начальное псевдослучайное число. Константы целого типа– последовательность цифр, константа десятичная, если цифры десятичные тип константы – тип с наименьшим диапазоном ,включающим эту константу. Для указания типа константы можно записывать её с суффиксами L,l и U,u: 127Lu - константа типа long беззнаковая. Восьмеричная константа. За нулем следуют восьмеричные цифры: 043, 0175. Шестнадцатеричная константа. За 0x или 0X следуют шестнадцатеричные цифры: 0xA, 0X1B7, 0X00FF. Вещественный тип Стандарт С++ определяет три вещественных типа данных: float 4 байта 1.17*10-38 <|x|<3.4*10+38 ; x=0 double 8 байтов 2.2*10-308 <|x|<1.7*10+308 ; x=0 long double 10 байтов 3.4*10-4932 <|x|<1.19*10+4932 ; x=0 Операции для вещественного типа: OP(вещественный)={+о –о ; * / ; + - ; < <= >= > ;== != } Функции для вещественного типа: #include<cmath> Fun(вещественный)={fabs(x), sin(x), cos(x), log(x), log10(x), exp(x), pow(a,b), tan(x), atan(x), asin(x), acos(x), sqrt(x)} ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|