Рассмотренный пример показывает основные возможности
Рассмотренный пример показывает основные возможности использования порядка выполнения логических операций. Это, во-первых, повышение эффективности за счет помещения наиболее вероятных условий в качестве первых операндов логических операций. Во-вторых, это возможность вставки в выражение проверок, при ложности которых последующие действия не будут производиться. Так, в следующем условном операторе
if чтение очередного символа из файла будет выполняться только в том случае, если конец файла еще не достигнут:
if(!feof(pf)) && (с = getc(pf)) …
Здесь
feof — функция проверки на конец файла,
getc — функция чтения символа из файла (см. раздел 12).
В-третьих, можно гарантировать, что в выражении
f(x)&&g(y)
функция
f будет вызвана раньше, чем функция
g. Для выражения
f(x)+g(y) этого утверждать нельзя.
В последующих примерах показано группирование операндов для различных выражений.
Выражение
|
Группирование операндов
|
a & b || c
|
(a & b) || c
|
a = b || c
|
a = (b || c)
|
q && r || s--
|
(q && r) || (s--)
|
p == 0 ? p += 1 : p += 2
|
(p == 0 ? p += 1 : p) += 2
|
В первом примере поразрядная операция И (&) имеет больший приоритет, чем -логическая операция ИЛИ (||), поэтому выражение
а&b является первым операндом логической операции ИЛИ.
Во втором примере логическая операция ИЛИ (||) имеет больший приоритет, чем операция простого присваивания, поэтому выражение
b||с
образует правый операнд операции присваивания. (Обратите внимание на то, что значение, присваиваемое
а, есть нуль или единица.)
В третьем примере показано синтаксически корректное выражение, которое может выработать неожиданный результат. Логическая операция И (&&) имеет более высокий приоритет, чем логическая операция ИЛИ (||), поэтому запись
q&&r
образует операнд. Поскольку логические операции сначала вычисляют свой левый операнд, то выражение
q&&r вычисляется раньше, чем
s--. Однако если
q&&r
дает ненулевое значение, то
s-- не будет вычисляться и
s не декрементируется. Более надежно было бы поместить
s-- на место первого операнда выражения либо декрементировать
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий