Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР 1-АП.doc
Скачиваний:
1
Добавлен:
15.11.2018
Размер:
1.05 Mб
Скачать

2.2. Стандартные типы данных, модификаторы,

квалификаторы доступа и преобразование типов данных

Каждая программа обрабатывает определенную информацию. В C++ данные имеют один из восьми базовых типов: char (текстовые данные), int (целые числа), float (числа с плавающей запятой одинарной точности), double (числа с плавающей запятой двойной точности), void (пустые значения), bool (логические значения), перечисления и указатели.

Текст (тип данных char) представляет собой последовательность символов, которые могут быть разделены пробелами. Обычно каждый символ занимает 8 бит, или один байт, с диапазоном значений от 0 до 255.

Целые числа (тип данных int) находятся в диапазоне от -32768 до 32767 и занимают 16 бит, то есть два байта, или одно слово. В Windows 98 и Windows NT и более современных ОС Windows используются 32-разрядные целые числа, что позволяет расширить диапазон значений от -2147483648 до 2147483647.

В C++ поддерживаются три типа целых чисел. Наряду со стандартным типом int существуют типы short int (короткое целое) и long int (длинное целое). Допускается сокращенная запись short и long.

Числа с плавающей запятой одинарной точности (тип данных float) могут быть представлены как в фиксированном формате, так и в экспоненциальном. Диапазон значений — ±3.4Е-38 до ±3.4Е+38, размерность — 32 бита, то есть 4 байта, или 2 слова.

Числа с плавающей запятой двойной точности (тип данных double) имеют диапазон значений от ±1.7Е-308 до ±1.7Е+308 и размерность 64 бита, то есть 8 байтов, или 4 слова. Ранее существовал тип long double с размерностью 80 бит и диапазоном от ±1.18Е-4932 до ±1.18Е+4932. В новых 32-разрядных версиях компиляторов он эквивалентен типу double и поддерживается из соображений обратной совместимости с написанными ранее приложениями.

Перечисления представляются конечным набором именованных констант различных типов.

Тип данных void, как правило, применяется в функциях, не возвращающих никакого значения. Этот тип данных также можно использовать для создания обобщенных указателей.

Указатели, в отличие от переменных других типов, содержат не данные в обычном понимании этого слова, а адреса памяти, где хранятся данные.

Переменные нового логического типа данных bool в C++ могут содержать только одну из двух констант: true или false.

Компилятор языка C++ позволяет при описании переменных указывать модификатор unsigned. Он применяется с четырьмя типами данных: char, short, int и long. Наличие данного модификатора указывает на то, что значение переменной должно интерпретироваться как беззнаковое число, то есть самый старший бит является битом данных, а не битом знака. Существует модификатор signed, который выполняет противоположное unsigned действие.

В C++ используются два квалификатора доступа const и volatile. Они применяются для обозначения неизменяемых переменных (const) и переменных, значения которых могут измениться в любой момент (volatile).

Иногда требуется, чтобы значение переменной оставалось постоянным в течение всего времени работы программы. Такие переменные называются константными. Например, если в программе вычисляется длина окружности или площадь круга, часто придется оперировать числом (3,14159). В бухгалтерских программах такой величиной является НДС.

Применение квалификатора volatile может понадобиться в том случае, когда переменная обновляется системными устройствами, например таймером. При получении сигнала от таймера выполнение программы прерывается, и значение переменной изменяется.

Квалификатор volatile также применяется при описании объектов данных, совместно используемых разными процессами в многозадачной среде.

Допускается в некоторых случаях одновременное применение квалификаторов const и volatile.

В С++ применяются и другие квалификаторы. Их рассмотрение выходит за рамки руководства.

Часто бывает, когда в операции участвуют переменные разных типов. Такие операции называются смешанными. Например:

int ival;

float fres;

ival=ival*fres;

В процессе выполнения смешанных операций компилятор автоматически производит преобразования типов данных. Целочисленное значение переменной ival считывается из памяти, приводится к типу с плавающей запятой и умножается на исходное значение переменной fres. Результат в виде значения с плавающей запятой присваивается переменной целого типа ival. Автоматические преобразования типов данных при выполнении смешанных операций осуществляются в соответствии с иерархией преобразований. Суть состоит в том, что с целью повышения производительности в смешанных операциях значения разных типов временно приводятся к тому типу данных, который имеет больший приоритет в иерархии. Ниже перечислены типы данных в порядке снижения приоритета: double, float, long, int, short.

Если значение преобразуется к типу, имеющему большую размерность, нет потери информации, вследствие чего не страдает точность вычислений.

Иногда требуется изменить тип переменной, не дожидаясь автоматического преобразования. Для этого предназначена операция приведения типа. Если в программе необходимо временно изменить тип переменной, нужно перед ее именем ввести в круглых скобках название соответствующего типа данных. Например:

fr=fv+(float)iv/iw;

fr=fv+iv/(float)iw;

fr=fv+(float)iv/(float)iw;

Во всех трех случаях перед выполнением деления происходит явное приведение значения одной или обеих переменных к типу float.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]