Урок 4.3. Отношения и логические операции

4.3. Отношения и логические операции

Операции отношения в Си определяются таблицей 5.2.

Таблица 5.2 Операции отношения

Название операции отношения Знак операции в Си
Больше >
Больше или равно >=
Меньше <
Меньше или равно <=
Равно ==
Не равно !=

 

Операции отношения вырабатывают значение истинности или ложности в зависимости от того в каком отношении находятся сравниваемые величины. Любое выражение в Си всегда имеет значение. Если выражение отношения истинно, то его значение равно 1, если ложно, то его значение равно 0. Операции отношения имеют приоритет ниже арифметических операций.

Среди операций отношения первые четыре имеют одинаковый приоритет и выполняются слева направо. Последние две операции==(равно) и !=(не равно) имеют более низкий приоритет чем первые четыре и, таким образом, выражение a<b==c<d дает результат 1, если выражение a<b u c<d будут иметь одно и то же  значение. Операции отношения можно использовать для всех основных типов данных за исключением строк (для сравнения строк используются встроенные функции).

Примеры выражений отношения:

a>b
(a+b)<2.5
7.8<=(c+d)
a>b==2

Выражение отношения а>b==2 всегда будет иметь значение 0 (ложь), т.к. a>b  может дать только 1 или 0 (истина или ложь). Сравнение любого из этих значений с 2 даст 0. Таким образом мы видим, что в Си можно записывать выражения, кажущиеся бессмысленными с точки зрения традиционных языков программирования.

Рассмотрим логические операции. Логические операции обычно используются в качестве связок для объединения двух и более выражений. Таблица 5.3 определяет логические операции Си.

Таблица 5.3 Логические операции

Название логической операции Знак операции в Си
Логическое И (коньюнкция) &&
Логическое ИЛИ (дизьюнкция) | |
Отрицание (логическое НЕ) !

Если <выражение1> и <выражение2> какие-либо выражения, то:

1.<выражение1> && <выражение2> истинно в том случае, когда оба выражения истинны;

2.<выражение1> || <выражение2> истинно в том случае, когда хотя бы одно из выражений истинно;

3. !<выражение1> истинно, если <выражение1>ложно, и наоборот.

Мы оговорили для <выражение1> и <выражение2> самый общий случай, не указав, что это за выражения.

Следовательно, в Си имеем право записать: 5&&2, где константа 5 это <выражение1>, а константа 2 это <выражение2>. Возникает вопрос: "Каково значение этого логического выражения?". Ответ на этот вопрос заставляет задуматься над тем, каким образом в Си трактуется понятие истина и ложь. Значением этого выражения будет 1(истина), ибо в Си могут использоваться любые выражения, причем в общем случае любое ненулевое значение, в том числе и отрицательное, трактуется как истина, а нулевое как ложь.

Среди логических операций их приоритеты в порядке убывания выстраиваются следующим образом:

-           отрицание (!);
-           логическое И (&&);
-           логическои ИЛИ (||).

Логические операции имеют меньший приоритет, чем операции отношения. Вычисление логических выражений, в которых имеются только операции && заканчивается, если обнаруживается ложность очередного применения операции &&. Далее продолжать вычисления нет смысла, исходя из определения семантики операции в соответствии с которым выражение будет ложным.

Аналогично для логических выражений, содержащих только операции ||, вычисления заканчиваются как только обнаруживается истинность применения операции. Из-за “досрочного” прекращения вычислений, эти две операции называют операциями короткого замыкания (shortcut circuit operations).

Примеры логических выражений:

5>2 && 4>7 ложно
5>2 || 4>7 истино
!(4>7) истино
4<=7 истино

рассказать друзьям и получить подарок

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов