СТАРШИНСТВО ОПЕРАЦИЙ
При выполнении арифметических операций в C++ необходимо знать, что C++ выполняет операции в определенном порядке, основанном на старшинстве операций. Например, операция умножения выполняется до сложения. Чтобы лучше понять старшинство операций, рассмотрите следующие выражения:
result =5+2*3;
В зависимости от порядка, в котором C++ выполняет умножение и сложение, результат будет разным:
result =5+2*3;
=7*3;
= 21;
result =5+2*3;
=5+6;
= 11;
Чтобы избежать путаницы, C++ присваивает каждой операции приоритет, который определяет порядок выполнения операций. Так как C++ выполняет операции в определенном порядке, то и ваши программы будут проводить арифметические вычисления соответствующим образом.
Таблица 5.3 перечисляет старшинство операций C++. Операции, находящиеся в верхней части, имеют более высокий приоритет. Операции внутри каждой части имеют одинаковый приоритет. Если вы рассмотрите таблицу, то увидите, что в C++ умножение имеет более высокий приоритет, чем сложение. Вы не знакомы со многими операциями, представленными в таблице. В настоящее время не думайте об этих операциях. К концу изучения этой книги вы сможете использовать (и понять) каждую из них!
Таблица 5.3. Старшинство операций в C++.
Операция
Имя
Пример
:: Разрешение области видимости classname::classmember_name
::
Глобальное разрешение
::variable_name
.
Выбор элемента
object.member_name
-
Выбор элемента
pointer-membername
[]
Индексация
pointer[element]
()
Вызов функции
expression(parameters)
()
Построение значения
type(parameters)
sizeof
Размер объекта
sizeof expression
sizeof
Размер типа
sizeof(type)
++
Приращение после
variable++
++
Приращение до
++variable
--
Уменьшение после
variable--
--
Уменьшение до
-- variable
Адрес объекта
variable
*
Разыменование
*pointer
new
Создание (размещение)
new type
delete
Уничтожение (освобождение) delete pointer
delete[]
Уничтожение массива
delete pointer
~
Дополнение
~expression
!
Логическое НЕ
! expression
+
Унарный плюс
+1
-
Унарный минус
-1
()
Приведение
(type) expression
.*
Выбор элемента
object.*pointer
-
Выбор элемента
object-*pointer
*
Умножение
expression * expression
/
Деление
expression / expression
%
Взятие по модулю
expression % expression
+
Сложение (плюс)
expression + expression
-
Вычитание (минус)
expression expression