Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная 4 ВЫРАЖЕНИЯ И ОПЕРАТОРЫ ПРИСВАИВАН...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
269 Кб
Скачать
☆

Арифметические выражения

Значением арифметического выра­же­ния является данное числового типа (целый, вещественный и ком­плекс­ный; их можно называть также арифметическим типом). Основ­ными операндами арифметического выражения являются данные ариф­метического типа.

Fortran

Запрещается последовательно указывать две арифмети­чес­кие операции. Например, не допускается запись следующего вида: A**-B, но разрешается: A**(-B)

Запрещаются следующие арифметические операции:

-деление на 0;

-возведение нулевого операнда в отрицательную степень;

-возведение отрицательного операнда в вещественную степень.

Если все операнды арифметического выражения имеют один и тот же тип, то и результат имеет тот же тип. Результат –3/2 будет –1. Когда опе­ран­ды имеют раз­лич­ные типы, тогда типа результата определяется ран­жи­ро­ванием сле­дую­щим образом:

1. COMPLEX*16 или DOUBLE COMPLEX (наивысший ранг);

2. COMPLEX*8;

3. REAL*8 или DOUBLE PRECISION;

4. REAL*4;

5. INTEGER*4;

6. INTEGER*2;

7. INTEGER*1 (низший ранг)

Таким образом, когда выполняется арифметическая операция и два опе­ранда имеют различные типы, тогда результат этой операции имеет тип наивысшего ранга. Исключением из правила являются операции, вклю­чающие и операнды типа REAL*8, и операнды типа COMPLEX*8, воз­в­ращающие результаты с типом COMPLEX*16. Например, если опе­рация вы­полняется над операндом типа INTEGER*2 и операндом типа REAL*4, то сначала INTEGER*2 преобразуется к real*4. Результат опе­рации имеет тип REAL*4. Подобным же образом выполняются опе­ра­ции над ве­щественным числом и комплексным числом. Сна­ча­ла веще­ствен­ное число преобразуется к комплексному типу и результат опе­ра­ции также будет иметь тип комплексный. Рассмотрим некоторые при­ме­ры.

Пусть i1 и i2 являются целочисленными переменными, r1 – вещественная переменная с обыч­ной точностью, т.е. типа REAL*4, c1 – комплексная переменная типа COMP­LEX*8.

А) Пусть дано выражение

i1/i2*r1

Сначала выполняется целочисленное деление переменных i1 и i2. Ре­зуль­тат этого деления будет целочисленный. Затем результат преоб­ра­зует­ся в вещественное число и выполняется операция умножения этого числа на r1.

Б) Пусть дано выражение

c1+i1

Переменная i1 сначала преобразуется к типу COMPLEX*8 и скла­ды­вает­ся с переменной c1.

QuickBasic, Visual Basic

Общие правила совпадают с правилами языка Fortran.

Значение выражение i \ j представляет собой математическое частное от i/j, округленное в меньшую сторону по абсолютной величине до значения целого типа. Результат –3\2 будет –1. Если j равно 0, результат будет ошибочным.

Операция MOD возвращает остаток от деления первого операнда вторым, то есть:

i MOD j = i - (i \ j) * j

Знак результата операции MOD будет тем же, что и знак i. Если j равно нулю, то результатом будет ошибка.

Turbo Pascal

Разрешается последовательно указывать две ариф­метические опе­ра­ции, если вторая операция является унарной (+ или -). Например, до­пус­кает­ся запись следующего вида: A*-B, что равноз­начно A*(-B).

Если оба операнда в операциях +, -, *, div или моd являются опе­ран­да­ми целого типа, то тип результата будет таким же, как общий тип обоих операндов.

Если один или более операндов в операциях +, -, или * имеют ве­ще­ствен­ный тип, то тип результата будет вещественным (real), если ис­поль­зована директива компилятора {$N-}, или типом с повышенной точ­но­стью (extended) при использовании директивы компилятора {$N+}.

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

Значение выражения х/у всегда является вещественной (real) или с по­вышенной точностью (extended), независимо от типов операн­дов. Если у равно 0, то результат будет ошибочным.

Значение выражение i div j представляет собой математическое част­ное от i/j, округленное в меньшую сторону по абсолютной величине до зна­че­ния целого типа. Результат –3 div 2 будет –1. Если j равно 0, результат бу­дет ошибочным.

Операция mod возвращает остаток, полученный путем деления двух ее операндов, то есть:

i mod j = i - (i div j) * j

Знак результата операции mod будет тем же, что и знак i. Если j равно ну­лю, то результатом будет ошибка.