Оператори2
Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.
Оператори можна як функції, які є частиною мови Delphi. Наприклад, вираз (х+Y) складається зі змінних х та Y, званих операндами, та оператора "+", в результаті чого повертається сума чисел, які присвоєні змінним X та Y.
Операторами є @, not, L, *, /, div, mod, and, shl, shr, as, +, -, or, хог> =, >, , =, in та is. Оператори @, not і " - унарні (застосовні одного операнда). Всі інші оператори - бінарні (застосовні до двох операндам), крім операторів + і -, які можна використовувати як унарні, і бінарні. Унарні оператори завжди передують оператору ( наприклад, -в), за винятком оператора 1LA", який слідує за операндом (наприклад, рЛ). Бінарні оператори розміщуються між 1 операндами (наприклад, А = 7). Для деяких операторів результат може залежати від типу операндів. Наприклад, оператор не виконує інверсію окремих розрядів цілого числа та логічне заперечення для булева операнда.
Арифметичні оператори можуть використовуватися з цілими і речовими операндами. Це оператори +, -, *, /, div та mod. У табл. 11.5 та 11.6 описані арифметичні оператори.
Таблиця 11.5. Бінарні арифметичні оператори
Операція Тип операндів Тип результату
додавання integer, real integer, real
віднімання integer, real integer, real
множення integer, real integer, real
речовий поділ Integer, real real
цілий поділ integer integer
Total div UnitSize
залишок integer integer
Таблиця 11.6. Унарні арифметичні оператори
Операція Тип операндів Тип результату
числопозитивне integer, real integer, real
число негативне integer, real integer, real
До арифметичних операторів застосовуються такі правила.
Результат речового поділу х/у завжди має тип Extended, незалежно від типів операндів х та у. Для інших арифметичних операторів результуючим типом буде Extended тільки у випадку, якщо принаймні один з операндів має Real. Якщо один із операндів має тип Int64, то тип результату буде Int64. За інших випадках тип результату буде integer.
Результатом операції х div у є значення х/в, округлене до найближчого цілого числа.
Оператор mod повертає залишок, отриманий від поділу операндів. Інакше кажучи, х mod у = х(х div у)*у.
Помилки часу виконання виникнуть, якщо у дорівнюватиме нулю у виразах х/у, х div у або х mod у.
Булеві оператори not, and, or і хог (табл. 11.7) застосовні до будь-яких булевих операндів і повертають булевий тип.
Таблиця 11.7, Булеві оператори
Типи операндів Тип результату
Done and (Total > 0)
Ці операції відповідають стандартним правилам булевої логіки. Наприклад, вираз х and у матиме значення True тоді і лише тоді, коли обидва операнда мають значення True.
Повне чи часткове обчислення
Компілятор підтримує два режими обчислень для операторів and І or: повне обчислення та часткове обчислення. Повне обчислення означає, що всі вхідні вирази оператори виконуються, навіть якщо результат логічного обчислення буде однозначно визначений після обчислення частини операторів. При частковому обчисленні, навпаки, обчислення буде припинено після отримання однозначного результату. Наприклад, якщо обчислюється вираз a і по частковомуваріанті і операнд А має значення False, то компілятор не перевірятиме значення операнда і видасть кінцевий результат False, так як у будь-якому випадку результат буде False.
Для вибору режиму обчислень використовуйте директиву компілятора $в. За промовчанням встановлено директиву , що дозволяє часткове обчислення. Для локального отримання режиму повного обчислення необхідно використовувати директиву ($+). Під час встановлення повного режиму обчислень для всього проекту необхідно використовувати вікно налаштування проекту, де встановлюється прапорець для Complete Boolean Evaf, при цьому всі вихідні модулі повинні бути перекомпільовані.
Якщо серед операндів зустрічається операнд типу Variant, завжди виконується повне обчислення, незалежно від директиви
Логічні оператори порозрядного обчислення
Логічні оператори, наведені у табл. 11.8 виконують порозрядні обчислення з цілочисленними операндами. Наприклад, якщо операнд X містить значення 001101, а операнд У - 100001, то у твердженні - г := х ог ї,-
змінної г буде надано значення 101101.
Таблиця 11.8. Логічні оператори порозрядного обчислення