Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП - ПОИТ (Бахтизин) часть 1 редакт.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

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

Операции отношения (сравнения) и логические операции используются для формирования логических выражений, имеющих только два значения: 0 – если выражение «ложь» и не ноль, если выражение «истина».

Язык Си поддерживает следующие операции отношения (таблица 3.1), которые условно можно разделить на 2 группы в зависимости от их взаимного приоритета:

<, <=, >, >= (более высокий приоритет)

==, != (более низкий приоритет)

Таблица 3.1. Представление операций отношения и равенства

Операция

Выражение

Что обозначает

>

>=

<

<=

==

!=

a>b

a>=b

a<b

a<=b

a==b

a!=b

a больше b

a больше или равно b

a меньше b

a меньше или равно b

a равно b

a не равно b

Однако следует отметить, что все данные операции выполняются слева направо.

Как операторы отношения, так и логические операторы имеют более низкий приоритет по сравнению с арифметическими операторами.

Например, выражение 15>10+9 в результате даст результат «ложь», так как данное выражение будет вычисляться как 15>(10+9).

Распространенными ошибками при работе с операциями отношения являются:

  1. использование операции присваивания = вместо операции равно ==

  2. разделение символов в операциях пробелами >= вместо >=

  3. написание символа в операции в обратном порядке =! вместо !=

3.3. Логические операции

Рассматривая операции отношения, мы проверяли одно простое выражение (некоторое условие). В языке Си существуют логические операции, с помощью которых можно формировать сложные условие путем объединения более простых. Логические операции всегда дают значение 0 – «ложь» или 1 –«истина».

Логические операции

Операция

Действие

&&

||

!

И

ИЛИ

НЕ

Например, мы хотим выполнить оператор или блок операторов только если два простых выражения истинны одновременно. Здесь можно применить логическую операцию &&:

if (a>=60 && a<=130)

printf(“Число а находится в диапазоне от 60 до 130”);

Во фрагменте кода программы оператор if содержит два простых выражения. Сначала оцениваются два простых выражения, так как приоритет операций <= и >= выше, чем операции &&. Затем рассматривается объединенное выражение. Это выражение является истинным только тогда, когда оба простых выражения истинны. И если это так, то на экран выведется текст “Число а находится в диапазоне от 60 до 130”. Если же оба или хотя бы одно из простых выражений ложно, то программа игнорирует вывод и переходит к оператору, следующему за if. В таблице 3.2 приводится таблица истинности операции &&.

Таблица 3.2. Таблица истинности операции &&

Выражение 1

Выражение 2

Выражение 1 && Выражение 2

0

0

0

0

1

0

1

0

0

1

1

1

Рассмотрим теперь операцию || (логическое ИЛИ). Допустим, что мы хотим обеспечить истинность хотя бы одного из простых выражений. Например,

if (а <= 10 || а >=100)

printf(“Число а попадает в один из интервалов”);

Этот оператор if также состоит из двух простых выражений, вычисляемых в первую очередь. Затем рассматривается объединенное выражение. В результате сообщение «Число а попадает в один из интервалов» выводится, если оба или одно из простых выражений истинно. В таблице 3.3 приводится таблица истинности операции ||.

Таблица 3.3. Таблица истинности операции ||

Выражение 1

Выражение 2

Выражение 1 || Выражение 2

0

0

0

0

1

1

1

0

1

1

1

1

Операция ! (логическое отрицание) имеет в качестве операнда только одно выражение. Данная операция помещается перед выражением, когда мы хотим выбрать ветвь программы с ложным первоначальным условием.

if (!(a == b))

printf(“Неверно, что число a равно числу b.\n”);

Заключение условия a == b в скобки производится, так как логическая операция отрицания имеет более высокий приоритет, чем операция равенства.

Таблица 3.4. Таблица истинности операции !

Выражение

!Выражение

0

1

1

0