Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подбельский Фомин_Программирование на языке СИ_...doc
Скачиваний:
259
Добавлен:
10.08.2019
Размер:
53.81 Mб
Скачать

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

Отношения и логические выражения. Отношение определяется как пара арифметических выражений, соединенных (разделенных) знаком операции отношения. Знаки операций отношения (уже были введены выше):

= равно; != неравно;

< меньше, чем; <= меньше или равно;

> больше, чем; >= больше или равно.

Примеры отношений:

Логический тип в языке Си отсутствует, поэтому принято, что отношение имеет ненулевое значение (обычно 1), если оно истинно, и равно 0, если оно ложно. Таким образом, значением отношения 6<=44 будет 1.

Операции >, >=, <, <= имеют один ранг 6 (см. табл. 1.4). Операции сравнения на равенство = = и ! = также имеют одинаковый, но более низкий ранг 7, чем остальные операции отношений. Арифметические операции имеют более высокий ранг, чем операции отношений, поэтому в первом примере для выражения а-b не нужны скобки.

Логических операций в языке Си три:

! - отрицание, т.е. логическое НЕ (ранг 2)

&& - конъюнкция, т.е. логическое И (ранг 11);

| | - дизъюнкция, т.е. логическое ИЛИ (ранг 12).

Они перечислены по убыванию старшинства (ранга). Как правило, логические операции применяются к отношениям. До выполнения логических операций вычисляются значения отношений, входящих в логическое выражение. Например, если а, b, с - переменные, соответствующие длинам сторон треугольника, то для них должно быть истинно, т.е. не равно 0, следующее логическое выражение:

Несколько операций одного ранга выполняются слева направо, причем вычисления прерываются, как только будет определена истинность (или ложность) результата, т.е. если в рассмотренном примере а+b окажется не больше с, то остальные отношения не рассматриваются - результат ложен.

Так как значением отношения является целое (0 или 1), то ничто не противоречит применению логических операций к целочисленным значениям. При этом принято, что любое ненулевое положительное значение воспринимается как истинное, а ложной считается только величина, равная нулю. Значением !5 будет 0, значением 4 && 2 будет 1 и т.д.

Присваивание (выражение и оператор).

Присваивание (выражение и оператор). Как уже говорилось, символ "=" в языке Си обозначает бинарную операцию, у которой в выражении должно быть два операнда - левый (модифицируемое именующее выражение - обычно переменная) и правый (обычно выражение). Если z - имя переменной, то

z = 2.3 + 5.1

есть выражение со значением 7.4. Одновременно это значение присваивается и переменной z. Только в том случае, когда в конце выражения с операцией присваивания помещен символ ";", это выражение становится оператором присваивания. Таким образом,

z = 2.3 + 5.1

есть оператор простого присваивания переменной z значения, равного 7.4.

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

Так как выражение справа от знака '=' может содержать, в свою очередь, операцию присваивания, то в одном операторе присваивания можно присвоить значения нескольким переменным, т.е. организовать "множественное" присваивание, например:

Здесь значение 6.4 присваивается переменной d, затем 6.4 как значение выражения с операцией присваивания "d=4.0+2.4" присваивается х и, наконец, 6.4 как значение выражения "x=d" присваивается с. Естественное ограничение - слева от знака '=' в каждой из операций присваивания может быть только леводопустимое выражение (в первых главах книги - имя переменной).

В языке Си существует целый набор "составных операций присваивания" (ранг 14 в табл. 1.4). Как уже говорилось в §1.4, каждая из составных операций присваивания объединяет некоторую бинарную логическую или арифметическую операцию и собственно присваивание. Операция составного присваивания является основой оператора составного присваивания:

имя_переменной ор=выражение;

где ор - одна из операций *, /, %, +, -, &, ^, |, «, ». Если рассматривать конструкцию "ор=" как две операции, то вначале выполняется ор, а затем '='. Например,

При выполнении каждого из этих операторов операндами для операции ор служат переменная из левой части и выражение из правой. Результат присваивается переменной из левой части.

Таким образом, первый пример можно рассматривать как обозначение требования "удвоить значение переменной х"; второй пример - "увеличить на 4 значение переменной z"; третий пример - "уменьшить значение переменной i в (x+4*z) раз". Этим операторам эквивалентны такие операторы простого присваивания:

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