Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы.docx
Скачиваний:
335
Добавлен:
22.03.2016
Размер:
1.03 Mб
Скачать

20. Операции инкремента и декремента, их разновидности

Инкремент (++) и декремент (--) – унарные операции увеличения и уменьшения операнда на 1 соответственно. Операнд может быть любого арифметического типа данных.

Операции имеют две формы – префиксную (++a, --a) и постфиксную (a++, a--).

Независимо от формы операция инкремента эквивалентна следующему оператору:

a = a + 1;

а операция декремента следующему:

a = a - 1;

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

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

В первом примере операторы ++ i; j ++; просто изменяют значения переменных i и j без какой-либо другой обработки и только после окончания работы этих операторов на экран выводятся эти измененные значения. Поэтому различие между префиксной и постфиксной формами не чувствуется. То же самое происходит и при выполнении операторов -- i; j--;.

Во втором примере префиксные и постфиксные формы операций инкремента и декремента участвуют в выполнении оператора вывода данных на экран. Поэтому при выполнении префиксных операций сначала происходит изменение значений переменной i, потом эти измененные значения выводятся на экран, а при выполнении постфиксных операций сначала выводятся неизмененные значения переменной j, а уже после этого производятся изменения значения этой переменной.

То есть сначала просматривается все выражение, при каждой встрече операции инкремента (декремента) в префиксной форме выполняется изменение на единицу переменной, а затем вычисляется выражение.

А как интерпретировать такие выражения:

a+++b

a---b

Эти выражения следует интерпретировать так:

(a++) + b

(a--) – b, Но не так:

a + (++b)

a - (--b)

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

Операции этой группы служат для сравнения значений. Сюда входят следующие операции:

• == - равно;

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

• > - больше;

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

• < - меньше;

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

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

Примеры:

a == b, a != b, a > 10, (a - 3) >= (b + 10).

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

Эти операции используются при построении сложных логических выражений. В эту группу входят 3 операции:

• ! - логическое отрицание (логическое НЕ);

• && - конъюнкция (логическое И);

• || - дизъюнкция (логическое ИЛИ).

Первая операция унарная, две остальные – бинарные. Операнды – выражения любого арифметического типа данных, значения которых интерпретируются как значения логического типа (отличное от 0 значение – true; 0 - false) . Результат этих операций - логического типа.

Правила записи и результаты выполнения логических операций приведены в следующей таблице:

Пусть, например, имеется математическое неравенство: 0 < x < 10. На языке C++ это неравенство следует записывать так: (0 < x) && (10 > x) или (х > 0) && (x < 10). А математическое неравенство 0 > x > 10 должно выглядеть следующим образом: (0 > x) || (10 < x) или (х < 0) || (x > 10).

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

Например. Если в выражении (a + 10) && (b – 1) значение первого (левого) операнда a + 10 равно 0 (false) (это будет при значении a = -10), то вычисление второго (правого) операнда b – 1 не выполняется, так как и без его вычисления, значение результата операции && уже известно – это false. А в выражении (a + 10) || (b – 1) второй операнд не будет вычисляться в том случае, если первый операнд не равен 0 – в этом случае результат операции || и так уже известен – он равен true.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]