Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТТП (методичка).doc
Скачиваний:
3
Добавлен:
10.11.2018
Размер:
2.24 Mб
Скачать
    1. Операции отношения

В языке Си определены следующие операции отношения: проверка на равенство ==, проверка на неравенство !=, меньше <, меньше или равно <=, больше >, больше или равно >=.

Все перечисленные операции вырабатывают результат типа int. Если данное отношение между операндами истинно, то значение целого — единица, а если отношение ложно, то нуль.

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

Рассмотрим следующий пример:

if((ch = getchar()) > ‘a’)

Функция getchar() (get character — получить символ) возвращает символ, введенный с клавиатуры. Присвоение этого символа переменной ch выполняется до того, как переменная ch будет сравниваться с символом ‘a’.

Благодаря гибкости языка Си оператор ветвления в рассмотренном случае будет выполнен и в том случае, если убрать пару скобок вокруг ch = getchar(). Компилятор будет интерпретировать получившийся оператор следующим образом: символ, получаемый от getchar(), сравнивается с ‘a’. Если он больше ‘a’, то переменной ch присваивается значение единица, в противном случае — нуль.

Такая гибкость может приводить к непроизвольным программным ошибкам. Поскольку компилятор Си может обрабатывать много вариантов оператора, программисту следует тщательно проверять сложные выражения в своей программе, задавая при этом вопрос: «Что должно означать это выражение на самом деле?»

Внимание!

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

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

В языке Си имеются три логические операции:

&& операция И (and)

|| операция ИЛИ (or)

! отрицание НЕ (not)

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

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

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

Вот несколько примеров типичных выражений, в которых используются логические операции:

if (i > 50 && j == 24)

...

if (value1 < value2 &&

(value3 > 50 || value4 < 20))

...

Студенту на заметку!

В блок-схеме оператору if соответствует блок проверки условия:

Выражение в блоке записывается без использования операций языка Си.

Если выражение громоздко и не помещается в блоке проверки условия, то используется блок комментария: