Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по С,С++.doc
Скачиваний:
28
Добавлен:
25.04.2019
Размер:
694.78 Кб
Скачать

6.2. Операции отношения

Меньше <, (7) Больше или равно > =, (7)

Меньше или равно <=, (7) Не равно != (8)

Больше > (7) Равно = = . (8)

Используются для сравнения в условных выражениях. Вырабатывают значения «истина» и «ложь».

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

Все операции отношений возвращают результат «истина» или «ложь» (0 или 1). Значение переменных при этом не изменяется.

При сравнении float лучше пользоваться только операциями < и >, т.к. ошибки округления могут привести к тому, что числа окажутся неравными, хотя по логике они должны быть равны. (например 3*1/3 равно 1,0, но 1/3 в вещественном формате будет представлена как 0,999999…, и произведение не будет равно 1)

Приоритет больше чем у операции присваивания, но меньше чем у +, -.

y > x+2; - сначала сложение, затем сравнение.

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

Используются для проверки условия, вырабатывая значение истина или ложь.

1) && "И" (операция логического умножения.)

Выражение истинно только в том случае, если истинны выражения, стоящие до и после &&. Если первое – ложь, то дальше не проверяется. (12)

2) || "ИЛИ" (логическое сложение.)

Выражение истинно, если одно из выражений истинно. Если первое – истина, дальше не проверяется (13)

3) ! "НЕ" (отрицание) (2)

Булева логика:

x

y

&&

||

!

0

0

0

0

  1. 11

0

1

0

1

1

0

0

1

0

1

1

1

1

Примеры:

if(x>0 && x<10) действие

5>2 && 4>7 - ложь

5>2 || 4>7 - истина

!(4>7) – истина

У операции ! (НЕ) очень высокий приоритет (выше только у скобок). && и || выше присваивания, но ниже чем отношения.

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

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

6.4. Операции с разрядами

Поразрядные логические операции. Приводят к изменению значения переменной. Действия производятся над данными класса целых и char. Они называются поразрядными, потому что они выполняются отдельно над каждым разрядом независимо от разряда, находящегося слева или справа.

1) ~ Дополнение до 1 или поразрядное отрицание. Это унарная операция изменяет каждую 1 на 0, а 0 на 1.

~(11010) получим (00101)

2) & Поразрядное И служит для сбрасывания битов. Эта бинарная операция сравнивает последовательно разряд за разрядом два операнда. Результат равен 1, если оба соответствующих разряда операндов равны 1

(10010011) & (00111101) => (00010001)

3) | Поразрядное ИЛИ служит для установки битов. Эта бинарная операция сравнивает последовательно разряд за разрядом два операнда. Результат равен 1, если один (или оба) из соответствующих разряда операндов равен 1.

(10010011) | (00111101) => (10111111)

4) ^ Исключающее ИЛИ. Результат равен 1, если один из разрядов равен 1 (но не оба)

(10010011) ^ (00111101) => (10101110)