Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Унарные операторы

Арифметические операторы и выражения

Порядок вычисления выражений

Под порядком вычисления (order of evaluation) понимается порядок, в котором вычисляются значения отдельных членов выражения. В языке Си имеется небольшое количество операторов, для которых определен порядок вычисления операндов. К числу таких операторов относятся:

● логическое И (&&),

● логическое ИЛИ (||),

● тернарный оператор (?:),

● оператор запятая (,).

Для других операторов очередность вычисления операндов не определена. Например, при анализе выражения sin(x) + cos(x) нельзя ожидать, что вызов функции sin(x) будет выполнен до вызова функции cos(x).

 

В языке Си имеется шесть унарных и пять бинарных арифметических операторов, показанных в приводимой ниже таблице. В таблице предполагается, что переменные i и n имеют целый тип, а переменные a и b – любой числовой тип.

 

Оператор Назначение Пример
+ Унарный плюс +a
- Унарный минус -a
++ Две разновидности инкремента ++a (префиксный инкремент)
a++ (постфиксный инкремент)
-- Две разновидности декремента --a (префиксный декремент)
a-- (постфиксный декремент)
+ Бинарное сложение a + b
- Бинарное вычитание a – b
* Умножение a * b
/ Деление a / b
% Остаток от деления нацело i % n

 

Остановимся на отдельных операторах. Отметим, что унарный оператор “+” относится к категории программистских недоразумений. Этот оператор никаких полезных действий не выполняет. Дело в том, что значение выражения, содержащего этот оператор, совпадает со значением его операнда. Выражение, содержащее унарный оператор “-”, возвращает значение, отличающееся от операнда только знаком.

Особое место среди унарных операторов занимают операторы инкремента (++) и декремента (--). Операнд, к которому применяются эти операторы, должен относиться к категории lvalue. Особенность этих операторов связана с наличием при их выполнении побочного эффекта. Побочный эффект состоит в изменении значения операнда на 1. Причем для инкремента значение его операнда увеличивается на 1, а для декремента - уменьшается на 1. Оба оператора существуют в двух формах: префиксной и постфиксной формах. Форма оператора не влияет на побочный эффект, имеющий место при выполнении оператора, а определяет возвращаемое оператором значение. При префиксной форме оператор возвращает измененное значение операнда, а при использовании постфиксной формы возвращается первоначальное значение операнда.

Приведем пример. Пусть имеется следующий фрагмент программы.

/*..........................*/
int n = 5;
int m = 5;
printf(“++n=%d\n”, ++n);
printf(“=%d\n”, n);
printf(“m++=%d\n”, m++);
printf(“m=%d\n”, m);

/*...........................*/

В результате выполнения рассматриваемого фрагмента программы вывод на экран дисплея будет иметь следующий вид:

++n=6
n=6
m++=5
m=6

В рассматриваемом примере к переменным “n” и “m”, имеющим равные значения, были применены различные формы инкремента. К переменной “n” была применена префиксная форма инкремента, а к переменной “m” – постфиксная форма. Окончательные значения рассматриваемых переменных оказались одинаковыми. Значения, возвращаемые в результате вычисления выражений ++n и m++, оказались разными. Выражение ++n вернуло новое значение своего операнда (с учетом побочного эффекта), а выражение m++ вернуло исходное значение своего операнда.

 

<== предыдущая лекция | следующая лекция ==>
Побочные эффекты и вычисления выражений | Преобразования типа при выполнении бинарных операторов
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 515; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.