Начиная с этого шага мы начинаем знакомиться с основными операциями,
используемыми в C++.
К арифметическим операциям относятся:
В языке C++ принято правило: если делимое и делитель имеют тип int, то деление производится нацело, то есть дробная часть результата отбрасывается. Как обычно, в выражениях операции умножения, деления и нахождения остатка выполняются раньше сложения и вычитания. Для изменения порядка действий используйте скобки.
Пример 1. Что напечатает следующая программа?
#include<iostream.h> main () { int x; x = -3+4*5-6; cout<<x<<" "; /* Операция 1 */ x = 3+4%5-6; cout<<x<<" "; /* Операция 2 */ x = -3*4%-6/5; cout<<x<<" "; /* Операция 3 */ x = (7+6)%5/2; cout<<x<<" "; /* Операция 4 */ }
Результат работы программы:
11 1 0 1
Комментарии. Воспользуемся таблицей приоритетов операций, двигаясь от высших к низшим. Мы будем пользоваться скобками, чтобы показать порядок применения операций к операндам.
Присваивание x = -3+4*5-6;. Наивысший приоритет имеет унарная
операция "-":
x=(-3)+4*5-6. Следующий по порядку приоритет имеет операция "*":
x=(-3)+(4*5)-6.
Обе операции "+" и "-" имеют одинаковый приоритет,
выполняются справа
налево: сначала "+", потом "-": x=(((-3)+(4*5))-6). Внизу таблицы приоритетов
находится операция "=". Теперь, когда для каждой операции
определены операнды,
можно вычислять значение выражения: (x=(((-3)+(4*5))-6)).
Для этого выражения вычисление начинается с самого внутреннего
подвыражения:
(x=((-3+(4*5))-6)).
Заменяем каждое подвыражение на его результат:
(x=((-3+20)-6)) (x=(17-6)) (x=11)
Значение выражения, содержащего операцию присваивания, есть значение правой части выражения, приведенное к типу левой части присваивания, т.е. целое число 11.
Присваивание x = 3+4%5-6;. Вследствие приоритета операций и
порядка
их выполнения получаем такой результат: (x=((3+(4%5))-6)).
Опять вычисление выражения начинается "изнутри":
(x=((3+4)-6) (x=(7-6)) (x=1) 1
Присваивание x = -3*4%-6/5;. Это выражение сложнее
предыдущего, но строгое
следование правилу приоритетов операций и порядку их выполнения позволяет
"распутать"
и его: x=(-3)*4%(-6)/5.
Операции "*", "%", "/" имеют один и тот же приоритет и выполняются
слева направо:
x=((-3)*4)%(-6)/5 x=((-3)*4)%(-6)/5 x=(((-3)*4)%(-6))/5 x=((((-3)*4)%(-6))/5) (x=((((-3)*4)%(-6))/5))
(x=(((-3*4)%-6)/5)) (x=((-12%-6)/5)) (x=(0/5)) (x=0) 0
Присваивание x = (7+6)%5/2;. Мы не всегда жестко связаны с
заранее
известными приоритетами операций; если порядок выполнения нужно изменить
или просто
"прояснить" структуру выражения, можно использовать скобки.
Вначале вычисляются подвыражения в скобках. Далее, как и раньше, следуем
правилу приоритетов
операций и порядку их выполнения:
x=((7+6)%5)/2 x=(((7+6)%5)/2) (x=(((7+6)%5)/2))
(x=(13%5)/2) (x=(3/2))
Так как при операциях с целыми числами дробная часть операнда
отбрасывается,
то на следующем шаге вычислений получаем выражение (x=1),
значением которого является 1.
На следующем шаге мы продолжим изучение арифметических операций, в
частности
рассмотрим особенности использования операций инкремента (++) и
декремента (--).