Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Концепция типов данных



Лекция 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-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.