Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция 3 ятп.doc
Скачиваний:
8
Добавлен:
22.02.2015
Размер:
103.94 Кб
Скачать

Лекция 3

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

С/C++ поддерживают концепцию (соглашение) типов данных, которая включает следующие договорённости:

= каждая переменная, константа, выражение, функция относятся к некоторому типу;

=тип объекта либо определяется по внешнему виду, либо задаётся специальным описанием;

= тип Т определяет множество значений, допустимых для данных этого типа, множество допустимых операций, множество функций, определённых для данных этого типа Т.

С каждым типом при реализации языка связывается ещё некоторая область памяти, её размер, используемая для представления значения, а также способ представления (формат) значения в этой области.

~ЗАЧЕМ НУЖЕН ТИП?

Описание типа позволяет транслятору проверять допустимость написанных в программе конструкций, а также от типа зависят и машинные команды, которые транслятор использует для описания действий.

Все типы можно поделить на

=основные(стандартные),они определены в языке и являются простыми типами, т.е. значение этого типа есть скалярная величина;

=составные, которые программист может строить сам, на основе стандартных типов, а также ранее определённых составных.

Основные типы данных 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

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 ÷ 429496729

Возможные сокращенные записи имён типов:

short int ≈ short

long int ≈ long

signed intsigned

Мы уже говорили, что размер переменных типа 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.

srand(a)- устанавливает начальное псевдослучайное число.

Константы целого типа – последовательность десятичных цифр, тип константы – тип с наименьшим диапазоном ,включающим эту константу. Для указания типа константы можно записывать её с суффиксами L,l и U,u: 127Lu - константа типа long беззнаковая.