русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Реляційні та логічні оператори


Дата додавання: 2014-11-28; переглядів: 1011.


Реляційними операторами є

> >= < <=

Вони всі мають однаковий пріоритет. Трохи нижче за пріоритетом знаходяться оператори рівності:

== !=

Реляційні оператори наділені меншим пріоритетом за арифметичні, тож вираз на зразок i < lim-1 розглядатиметься як i < (lim-1), як і очікувалось.

Цікавішими є логічні оператори && та ||. Вирази, поєднані && або ||, оцінюються з ліва на право, і їхня оцінка закінчується, як тільки виявлено істинність чи хибність результату. Більшість програм C покладаються на ці властивості. Ось, наприклад, цикл функції вводу, яку ми написали у Розділі 1:

for (i=0; i < lim-1 && (c=getchar()) != '\n' && c != EOF; ++i)

s[i] = c;

Перед тим як прочитати новий знак, необхідно перевірити, чи є місце для його збереження в масиві s, тож треба спочатку дізнатися, чи i < lim-1. Якщо ця перевірка зазнає невдачі, нам не слід продовжувати далі, і читати наступний знак.

Так само, було би недоцільно перевіряти c на предмет EOF (кінця файла), якщо до цього не викликано getchar; саме тому виклик і присвоєння мають відбутися до перевірки символу, збереженого в c.

Пріоритет && є більшим за ||, але обидва поступаються релятивним операторам і операторам рівності, тож вирази на зразок

i < lim-1 && (c=getchar()) != '\n' && c != EOF

не вимагають додаткових дужок. Але оскільки пріоритет != переважає оператор присвоєння =, дужки обов'язкові у випадку

(c=getchar()) != '\n'

для того, щоб добитися бажаного результату - спочатку, присвоєння значення c, а потім, порівняння його з '\n'.

За визначенням, числове значення релятивного або логічного виразу дорівнює 1, якщо співвідношення істинне, і 0 — якщо хибне.

Унарний оператор заперечення ! перетворює ненульовий операнд на 0 (нуль) і, навпаки, нульовий операнд на 1 (одиницю). Поширеним є застосуванням ! в конструкціях на зразок

if (!valid)

замість

if (valid == 0)

Важко узагальнити, яка з цих форм є кращою. Конструкції на кшталт !valid легко читаються («if not valid» — «якщо не дійсне»), але складніші вирази буває важко зрозуміти.

Вправа 2-2. Напишіть цикл, еквівалентний наведеному вище, але без використання && або ||.


<== попередня лекція | наступна лекція ==>
Оголошення | Перетворення типів


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн