Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП лекции Раздел 4.doc
Скачиваний:
16
Добавлен:
28.09.2019
Размер:
2.56 Mб
Скачать

4.3.1. Базовые типы данных.

Стандартные типы данных в C++:

• char — символ;

• int — целое число;

• float — число с плавающей точкой;

• double — число с плавающей точкой двойной точности;

• enum — перечислимый тип задает набор именованных констант целого типа.

Уточняющие описатели типов:

short, long и unsigned

делают возможными, например, следующие описания:

Тип Представление

unsigned char Целое без знака в диапазоне (0-255)

short int Короткое целое

long int Длинное целое

unsigned short int Короткое целое без знака

unsigned int Целое без знака

unsigned long int Длинное целое без знака

Смысл приведенных описаний не изменится, если в них опустить ключевое слово int. Размер памяти, отводимой для хранения переменной стандартного типа, а следовательно, и диапазон значений для большинства типов не определе­ны в языке C++ и зависят от компилятора и конкретного операционного окру­жения.

При выполнении операций производятся автоматические преобразования стан­дартных типов, которые зависят от типов операндов и операций. Если какой-нибудь операнд имеет более высокий тип, то к нему преобразуются ос­тальные. Схема выглядит так:

int ->long -> double

Кроме автоматического приведения типов существует явное, задаваемое про­граммистом. В языке С явное преобразование осуществляется с помощью опера­ции приведения типов (cast operation). Например, если определены переменные:

int i;

double a=3.14:

то оператор i=(int)a; приводит тип значения переменной а к типу переменной i. Дробная часть отбрасывается и i получает значение 3.

В языке C++ наряду с этим способом существует другой, более естественный способ записи явного преобразования типов. Например, при объявлении переменных

int i=17;

float a=float(i);

сразу про­исходит их инициализация и явное приведение типа. Синтаксис создает впечат­ление, что в языке есть встроенная функция с именем float, однако это не функ­ция, а операция явного приведения типа. Любое другое имя стандартного типа может быть использовано аналогичным способом.

Левая часть оператора присвоения = должна быть адресуемым выражением. Адресуемое выражение lvalue (left value) объединяет:

• численную переменную (numeric variable);

• переменную типа «указатель» (pointer variable);

• прямую ссылку па поле структуры (structure field reference);

• ссылку на поле структуры с помощью указателя (structure field indirection);

• элемент массива (subscripted array element).

Выражения, которые нельзя располагать в левой части оператора присвоения, но можно в правой, иногда описываются термином rvalue (right-hand-side value). Например, если объявлены переменные int i, j=2,k=3;, то оператор i=j+k; явля­ется вполне законным, a j+k=i; — нет (illegal), гак как выражение j+k есть выра­жение типа rvalue.

Переменная с описателем const не может быть левым операн­дом операции присвоения. Благодаря описателю const значение пере­менной, один раз определенное, уже не может быть изменено в пределах дей­ствия ее имени. Например, описание const float PERM=1.256E6; определяет PERM как вещественную переменную, значение которой изменить не удастся. Попытка присвоить PERM другое значение вызовет ошибку на стадии компиляции. Объявление const size=32767; равносильно const int size=32767;, так как описа­тель int приписывается по умолчанию.