Главная страница Библиотека (скачать книги) Скачать софт Введение в программирование Стандарты для C++ Уроки по C# Уроки по Python HTML Веб-дизайн Ассемблер в среде Windows ActiveX Javascript Общее о Линукс Линукс - подробно Линукс - новое Delphi Паскаль для начинающих Турбопаскаль Новости Партнеры Наши предложения Архив новостей |
Действия со скалярными типами данных При проведении вычислений с данными скалярных типов (константами и переменными) можно выполнять различные операции. Рассмотрим главные из них.
Арифметические операции Арифметические операции + (сложение), - (вычитание), * (умножение), / (деление) определены для данных целочисленных типов (и их интервалов) и вещественных типов. Тип результата операций +, —, * с целыми операндами - целый, а с вещественными операндами - вещественный. Результат операции / всегда вещественный (но нельзя делить на нуль). Если операнды имеют разные типы, то эти типы должны быть совместимы. Относительно указанных операций совместимы между собой все целочисленные типы и их интервалы, а для вещественных - все вещественные типы. Если один из операндов целый, а другой вещественный, то перед выполнением операции операнд целого типа приводится к вещественному типу; результат имеет вещественный тип. Этот вещественный тип - тип real или тип extended (если задана директива компилятора {$N+}). Для целочисленных типов определены еще две важные операции: mod (остаток от деления) и div (целая часть частного), результат целого типа. Примеры: 11 mod 5 дает 1, 11 div 5 дает 2. Следующая программа демонстрирует выбор "подходящих" интервальных типов для переменных программы и использование операций целочисленного деления для вычисления времени суток по заданному количеству секунд.
Особенности выполнения арифметических операций с целочисленными операндами При описании объектов целочисленного типа нужно тщательно выбирать подходящий тип, заботясь, с одной стороны, об экономном использовании памяти, а с другой стороны - о возможности выхода за диапазон значений при выполнении операций над данными этих типов. Следующая программа демонстрирует выполнение арифметических операций с целым типом integer. Задавая значения операндов из указанного диапазона можно посмотреть результаты выполнения операций. Особое внимание нужно обратить на выдачу программы, когда значение операнда или результата выходит за границы диапазона типа integer.
Ниже приведено одно из изображений на экране при исполнении этой программы, показывающее, что при заданных операндах результаты операций "+" и "*" неверны.
При выполнении арифметических операций и стандартных функций с целочисленными операндами не контролируется получение недопустимых значений, что часто приводит к получению неверных результатов при вычислении выражений. Результаты операций "+", "-", "*" с операндами типов byte, shortint и integer имеют значение типа integer. Результат этих операций с операндами типа word имеет тип word, а для операндов типа longint - тип longint. Если значение результата этих операций выходит за пределы диапазона указанного выше типа результата, то результат операции неверен (равен значению, которое вычисляется "по модулю" этого диапазона). Для операндов, имеющих разные целочисленные типы, указанные операции выполняются как для операндов типа longint.
Ниже приводится информация о результатах выполнения операций "+" и "*" для разных целочисленных типов данных, полученная с помощью проверочной программы. Приведем только выдачу этой программы (сама программа здесь не приводится).
СЛЕДУЮЩИЕ ПРИМЕРЫ ИЛЛЮСТРИРУЮТ ВЫПОЛНЕНИЕ ОПЕРАЦИЙ "+" И "*"
Проконтролировать правильность выполнения операций со скалярными целочисленными операндами можно, задав директиву {$Q+}.
|
||
Библиотека программиста. 2009. |
|