Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
67
Добавлен:
30.05.2015
Размер:
411.14 Кб
Скачать
    1. Логические выражения

Операции отношения используются для сравнений и применяются при формировании выражений условия ("логических выражений"). При программировании на Си используются:

< меньше

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

= = равно

>= больше или равно

> больше

!= не равно

С помощью этих операций величина слева от знака операции сравнивается с величиной справа от него:

a < b

c >= 0

Результатом вычисления операции отношения будет 0 ("ложь") или 1 ("истина"). Более того, в качестве "истины" принимается любое значение, не равное 0!

Не путайте оператор присваивания (=) и операцию отношения "равно" (= =)! Это совершенно разные действия:

cnn = 3; – присваивает значение 3 переменной cnn;

cnn = = 3; – проверяет, равняется ли значение переменной cnn числу 3.

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

Операция

Смысл

&&

И

||

ИЛИ

!

НЕ

Предположим, что expr1 и expr2 – два простых логических выражения типа cat > rat или debt == 1000. Тогда

  1. expr1 && expr2 истинно в том и только в том случае, когда оба выражения expr1 и expr2 истинны.

  2. expr1 || expr2 истинно в том случае, если какое-нибудь из выражений expr1 или expr2 истинно или оба истинны.

  3. !expr1 истинно, если выражение expr1 ложно, и наоборот.

Примеры:

5 > 2 && 4 > 7 – ложно, поскольку истинно только одно подвыражение;

5 > 2 || 4 > 7 – истинно, поскольку по крайней мере одно из подвыражений истинно;

!( 4 > 7 ) – истинно, потому что 4 не больше 7. Это выражение эквивалентно обратному условию: 4 <= 7

Математическое двойное неравенство a c < d на языке Си будет выглядеть следующим образом:

a <= c && c < d

    1. Приоритеты (порядок) выполнения операций

Операция ! имеет очень высокий приоритет, он выше, чем у умножения, такой же, как у операции увеличения, и только круглые скобки имеют более высокий приоритет. Приоритет операции && выше, чем операции ||, а обе они имеют более низкий приоритет, чем операции отношения, но более высокий, чем операция присваивания. Поэтому выражение

a > b && b > c || b > d

будет интерпретировано так:

((a > b) && (b > c)) || (b > d)

т.е. b содержится между с и а или b больше d.

Список операций по старшинству

(от высокого приоритета к низкому)

!, ++,- -, -, & (адрес), * (указатель)

*, /, %

+, -

<, <=, >, >=

= =, !=

&&

| |

?:

=, +=, -=, *=, /=

    1. Порядок вычислений

Логические выражения вычисляются слева направо; вычисления прекращаются, как только устанавливается истинность или ложность всего выражения. Пример:

num != 0 && 10/num == 1

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

Соседние файлы в папке Методические указания