Принятие решений и логические величины. Операторы отношения и сравнения на равенство

При разработке программ часто возникает необходимость в принятии решений. В строго типизированных языках для этих целей используются логические (булевские) типы данных. В классическом языке Си логический тип отсутствовал. Для принятия решений использовались некоторые соглашения относительно замены логических значений числами. В связи с тем, что эти соглашения должны обеспечивать взаимные переходы между числами и логическими значениями необходимо учитывать следующее:

● Принцип интерпретации числовых значений в качестве логических значений

● Интерпретация логических значений в качестве чисел.

В языке Си эти соглашения выглядят следующим образом:

● Любое число (целое или вещественное), отличное от нуля, может интерпретироваться в соответствующем контексте как логическое значение true, а число, равное нулю – как логическое значение false.

● Логическое значение true в контексте, требующем числовой интерпретации, воспринимается как целое число равное 1, логическое значение false – воспринимается как целое число равное 0.

При этом оказывается, что в качестве “источников” логических значений можно использовать следующие программные конструкции:

● Обычные арифметические выражения (нулевое значение такого выражения соответствует логическому значению false, а любое не нулевое значение - true).

● Отношения и сравнения на равенство.

● Выражения, использующие логические операторы, в качестве операндов которых служат арифметические выражения, отношения и сравнения на равенство.

Ближайшей нашей задачей является рассмотрение отношений и сравнений на равенство.

Как уже отмечалось ранее, отношения и сравнения на равенство используются для получения логических значений. Это обеспечивается путем оценки истинности отношений и сравнений на равенство. Причем в том случае, когда истинность имеет место, указанное выражение возвращает значение 1, в противном случае возвращается значение 0.

В таблице приводятся названия рассматриваемых операций, математические знаки операций, операторы языка Си и примеры их применения

 

Название операции Математический знак Оператор Си Пример
меньше < < a < b
не меньше ³ >= a >= b
больше > > a > b
не больше £ <= a <= b
равно = == a == b
не равно ¹ != a != b

Первые четыре оператора, приведенные в таблице, имеют одинаковый приоритет, а операторы сравнения на равенство имеют приоритет на один уровень ниже. Рассматриваемые операторы имеют более низкий приоритет по сравнению с арифметическими операторами. Пусть имеется следующий фрагмент программного кода:

/* . . . . . . . . . . . . . . . . . . . . . . . . . . . */
int n = 3;
printf(“n > 2 = %d n < -1 = %d\n”, n > 2, n < -1);
/* . . . . . . . . . . . . . . . . . . . . . . . . . . . */

В этом фрагменте кода оцениваются значения отношений n > 2 и n < -1 для случая, когда значение переменной n равно 3. Нетрудно видеть, что первое отношение должно принимать значение true (истина), а второе отношение – значение false (ложь). Обратимся теперь к выводу, полученному в результате выполнения данного фрагмента, который имеет следующий вид:

n > 2 = 1 n < -1 = 0

С учетом принятых в языке Си относительно кодирования булевских значений соглашений в качестве значения отношения n > 2 выведено число 1, в качестве значения второго отношения – число 0.