Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ_po_OAIP.docx
Скачиваний:
4
Добавлен:
04.08.2019
Размер:
56 Кб
Скачать
☆

Операнд_1 Знак_Операции Операнд_2

Операндами могут быть любые арифметические выражения и указатели.

Арифметические выражения перед сравнением вычисляются и преобразуются к одному типу.

Результат операции имеет значение 1 (true), если отношение Истинно, или получено не нулевое значение, в противном случае 0, т.е. Ложно (false).

В языке Си нет логического типа данных, в С++ это тип bool.

Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции отношений.

Арифметические операции имеют больший приоритет над операциями сравнения.

Примеры. Какие будут результаты в следующих выражениях:

int a = 2, b = 5, x;

1) x = a % b == 0;

2) x = a * b > 3;

3) x = (a != 0) + (b == 5);

Логические операции в порядке убывания приоритета:

! – Логическое «НЕ», отрицание (инверсия);

&& – Логическое «И», конъюнкция (умножение);

|| – Логическое «ИЛИ», дизъюнкция (сложение).

Операндами логических операций могут быть любые скалярные объекты. Ненулевое значение операнда Истинно (1), нулевое – Ложь (0). Результат логической операции 1, или 0.

Общий вид унарной операции отрицания, которая изменяет значение Операнда на противоположный:

! Операнд

Общий вид бинарных операций И и ИЛИ

Выражение_1 Операция Выражение_2

1. В операции И (&&) результат 1 только если Истинны оба Выражения, иначе – 0 (умножение).

2. В операции ИЛИ (||) результат 0 только если Ложны оба Выражения, иначе – 1 (сложение).

Особенность операций И и ИЛИ – экономное последовательное вычисление Выражений-Операндов:

1) если Выражение_1 операции И Ложно, то результат операции – 0 и Выражение_2 не вычисляется;

2) если Выражение_1 операции ИЛИ Истинно, то результат операции – 1 и Выражение_2 не вычисляется.

Логические операции имеют меньший приоритет, чем операции сравнения.

Примеры:

1) y > 0 && x == 7  1, если оба выражения Истинны;

2) y > 0 || x == 7  1, если хотя бы одно выражение Истинно.

Побитовые логические операции (~, &, |, ^), операции над битами (>>, <<)

В языке Си предусмотрен набор операций для работы с отдельными битами. Побитовые логические операции нельзя применять к переменным вещественного типа.

Обозначения операций:

~ Дополнение (унарная операция);

& Побитовое «И»;

| Побитовое включающее «ИЛИ»;

^ Побитовое исключающее «ИЛИ» – сложение по модулю 2;

>> Сдвиг вправо;

<< Сдвиг влево.

16. Условные операторы.

Для выбора одной из ветвей вычислений применяется оператор условного

перехода:

if (выражение) оператор 1;

else оператор 2;

вычисляется выражение, и если его значение не равно 0 (истинно), то выполняет-

ся оператор 1, иначе – оператор 2, например:

if(x>y) max = x;

else max = y;

Если операторы 1, 2 содержат более одного оператора, то они заключаются в фи-

гурные скобки { }, т.е. применяется блок.

Конструкция else… может отсутствовать и такую форму называют сокра-

щенной, тогда в случае ложности условия управление передается на следующий

за if оператор.

Если операторы 1, 2 в свою очередь являются операторами if, то такой опе-

ратор называют вложенным, при этом ключевое слово else принадлежит ближай-

шему предшествующему if.

Например, найти наибольшее значение из трех чисел x, y, z:

if (x>y)

if (x>z) max=x;

else max=z;

else if(y>z) max=y;

else max=z;

Операции сравнения: < (меньше), <= (меньше или равно), > (больше), >=

(больше или равно), != (не равно), = = (равно). Пары символов разделять нельзя.

Операции сравнения бинарные, их общий вид:

Операнд 1 знак операции Операнд 2

Операндами операций сравнения могут быть данные любых базовых типов, зна-

чения которых перед сравнением преобразуются к одному типу.

17. Условная тернарная операция.

Тернарная (условная) операция ?:

Ее общая форма:

Операнд 1 ? Операнд 2 : Операнд 3

Если значение операнда 1 истинно (не равно 0), то результатом операции является

операнд 2, иначе – операнд 3.

Например, найти наибольшее из двух чисел: max = a>b ? a : b;

18. Операция запятая.

Данная операция используется при организации строго гарантированной последовательности вычислений (обычно используется там, где по синтаксису допустима только одна операция, например, в операторе for). Форма записи:

Выражение_1, … , Выражение_N;

Выражения 1, 2, …, N вычисляются последовательно друг за другом и результатом будет значение последнего Выражения_N, например:

m = ( i = 1, j = i + 1, k = 6, n = i + j + k );

получим последовательность вычислений, взятых в скобки:

i = 1, j = i + 1 = 2, k = 6, n = 1 + 2 + 6,

в результате m = n = 9.

Используя «запятую» в операции присваивания, нужно помнить, что операция присваивания выполняется справа на лево, поэтому последним будет Выражение_1:

Операнд = Выражение_1, … , Выражение_N;

Тогда предыдущий пример (без скобок) следует записать:

m = n = i + j + k, k = 6, j = i + 1, i = 1;

получим последовательность аналогичных вычислений:

i = 1, j = i + 1 = 2, k = 6, n = 1 + 2 + 6,

в результате m = n = 9.

19. Оператор switch

switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений.

Общая форма:

switch(выражение) {

case const_1: операторы; break;

…

case const_N: операторы; break;

default: операторы;

}

Вычисляется выражение и проверяется, совпадает ли его результат со значением

одной из констант. При совпадении выполняются операторы этого case. Значе-

ниями const_1,…, const_N могут быть только целые или символьные константы.

Конструкция default выполняется, если результат выражения не совпал ни с одной

из констант, и может отсутствовать. Оператор break выполняет досрочный выход

из switch (после выполнения ветви case все остальные будут опущены). Если опе-

ратор break в case не записан, то будут выполняться операторы следующих ветвей

case до появления оператора break, либо до завершения оператора switch.