Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_по_пяву_4.doc
Скачиваний:
134
Добавлен:
15.03.2015
Размер:
1.29 Mб
Скачать
  1. Принятие решений и логические величины. Операторы отношения и сравнения на равенство

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

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

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

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

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

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

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

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

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

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

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

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

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

Название операции

Математический знак

Оператор Си

Пример

меньше

<

<

a < b

не меньше

>=

a >= b

больше

>

>

a > b

не больше

<=

a <= b

равно

=

==

a == b

не равно

!=

a != b

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

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

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

n> 2 = 1n< -1 = 0

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