Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗАЧЁёёт прога.docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
2.54 Mб
Скачать

12. Виды и приоритет элементарных операций (унарные, бинарные, арифметические, логические, отношения). Оператор присваивания и автоматическое преобразование типов операндов. Логические операции

Над логическими аргументами в Турбо Паскаль определены следующие операции:

  • NOT - логическое отрицание ("НЕ")

  • AND - логическое умножение ("И")

  • OR - логическое сложение ("ИЛИ")

  • XOR - логическое "Исключающее ИЛИ"

Операции отношения

К операциям отношения в Турбо Паскаль относятся такие операции, как:

  • > - больше

  • < - меньше

  • = - равно

  • <> - не равно

  • >= - больше или равно

  • <= - меньше или равно

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

  • унарные - not (отрицание);

  • мультипликативные - * (умножение), / (деление), div (деление нацело), mod (остаток от целочисленного деления), and (логическое “И”);

  • аддитивные - + (сложение), - (вычитание), or (логическое “ИЛИ”);

Приоритет операций

Порядок вычисления выражения определяется старшинством (приоритетом) содержащихся в нем операций. В языке Паскаль принят следующий приоритет операций:

  1. унарная операция not, унарный минус -, взятие адреса @

  2. операции типа умножения:  *  /  div  mod  and

  3. операции типа сложения:  +  -  or  xor

  4. операции отношения:  =  <>  <  >  <=  >=  in

Оператор присваивания.

Предназначен для присваивания переменной значения выражения. Оператор обозначается символом «:=», в левой части указывается имя переменной, в правой – вычисляемое выражение.

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

 Автоматическое преобразование типов операндов.

При выполнении операций производится автоматическое преобразование типов, чтобы привести операнды выражений к общему типу или чтобы расширить короткие величины до размера целых величин, используемых в машинных командах. Выполнение преобразования зависит от специфики операций и от типа операнда или операндов. Рассмотрим общие арифметические преобразования. ■ 1. Операнды типа float преобразуются к типу double.  ■ 2. Если один операнд long double, то второй преобразуется к этому же типу.  ■ 3. Если один операнд double, то второй также преобразуется к типу double.  ■ 4. Любые операнды типа char и short преобразуются к типу int.  ■ 5. Любые операнды unsigned char или unsigned short преобразуются к типу unsigned int.  ■ 6. Если один операнд типа unsigned long, то второй преобразуется к типу unsigned long.  ■ 7. Если один операнд типа long, то второй преобразуется к типу long.  ■ 8. Если один операнд типа unsigned int, то второй операнд преобразуется к этому же типу.  Таким образом, можно отметить, что при вычислении выражений операнды преобразуются к типу того операнда, который имеет наибольший размер. Пример: double ft,sd; unsigned char ch; unsigned long in; int i; .... sd=ft*(i+ch/in);  При выполнении оператора присваивания правила преобразования будут использоваться следующим образом. Операнд ch преобразуется к unsigned int (правило 5). Затем он преобразуется к типу unsigned long (правило 6). По этому же правилу i преобразуется к unsigned long и результат операции, заключенной в круглые скобки будет иметь тип unsigned long. Затем он преобразуется к типу double (правило 3) и результат всего выражения будет иметь тип double.