Шаг 2.
Знаки операций

    На этом шаге мы познакомимся с различными операциями, которые используются в языке программирования С++.

    Все возможные операции делятся на две группы по числу используемых операндов: унарные и бинарные. Таблицы 1 и 2 содержат список операций.

Таблица 1. Унарные операции
Обозначение операции
Назначение операции
&
Получение адреса операнда.
*
Обращение по адресу, то есть доступ по адресу к значению того объекта, на который указывает операнд. Операндом должен быть адрес.
-
Унарный минус - изменяет знак арифметического операнда.
+
Унарный плюс (введен для симметрии с унарным минусом).
~
Поразрядное инвертирование внутреннего двоичного кода целочисленного аргумента (побитовое отрицание).
!
Логическое отрицание (логическое НЕ) значения операнда. Может применяться к скалярным операндам. Результат операции равен 0, если операнд ненулевой и 1 в противном случае. В качестве логических значений в языке С++ используют целые числа: 0 - ложь, !0 (не нуль) - истина. Отрицанием любого ненулевого числа будет 0, а отрицанием нуля будет 1. Таким образом: !1 равно 0; ! (-5) равно 0; !0 равно 1.
++
Увеличение на единицу (инкремент). Операция может быть префиксной (увеличение значения операнда на 1 до его использования) и постфиксной (увеличение значения операнда на 1 после его использования).
--
Уменьшение на единицу (декремент).
sizeof
Вычисление размера (в байтах) объекта того типа, который имеет операнд. Используются два формата операции: sizeof (унарное_выражение) и sizeof (тип).


    Бинарные операции. Эти операции делятся на следующие группы:

Таблица 2. Бинарные операции
Обозначение операции
Назначение операции
Аддитивные операции
+
Бинарный плюс (сложение арифметических операндов или сложение указателя с целочисленным операндом).
-
Бинарный минус (вычитание арифметических операндов или указателей).
Мультипликативные операции
*
Умножение операндов арифметического типа.
/
Деление операндов арифметического типа. При целочисленных операндах абсолютное значение результата округляется до целого. Например: 20/3 равно 6, -20/3 равняется -6, (-20)/3 равно -6, 20/(-3) равно –6.
%
Получение остатка от деления целочисленных операндов (деление по модулю). При неотрицательных операндах остаток положительный. В противном случае остаток определяется реализацией. Например: l3%4 равняется 1, (-13) %4 равняется -1, 13%(-4) равно +1, а (-13)% (-4) равняется -1. При ненулевом делителе для целочисленных операндов всегда выполняется соотношение: (a/b) *b + a%b равно а.
Операции сдвига (определены только для целочисленных операндов). Формат выражения с операцией сдвига: <операнд1> <операция сдвига> <операнд2>.
<<
Сдвиг влево битового представления операнда1 на количество разрядов, равное значению операнда2.
>>
Сдвиг вправо битового представления операнда1 на количество разрядов, равное значению операнда2.
Поразрядные операции
&
Поразрядная конъюнкция (И) битовых представлений значений целочисленных операндов.
|
Поразрядная дизъюнкция (ИЛИ) битовых представлений значений целочисленных операндов.
^
Поразрядное исключающее ИЛИ битовых представлений значений целочисленных операндов.
Операции отношения (сравнения). Тип операндов: арифметический или указатель. Результат целочисленный: 0 (ложь), 1(истина).
<
Меньше, чем.
<=
Меньше или равно.
>=
Больше или равно.
>
Больше, чем.
==
Равно.
!=
Не равно.
Логические бинарные операции. Результат: 0 (ложь) или 1 (истина).
&&
Конъюнкция арифметических операндов или отношений.
||
Дизъюнкция арифметических операндов или отношений.
Операции присваивания
=
Присвоить значение выражения-операнда из правой части операнду левой части, например: Р = 10.3 - 2*х;.
*=
Присвоить операнду левой части произведение значений обоих операндов: например: P*= 2 эквивалентно Р = Р * 2;.
/=
Присвоить операнду левой части частное от деления значения левого операнда на значение правого, например: P/=2.2-d эквивалентно Р = Р / (2.2 – d);.
%=
Присвоить операнду левой части остаток от деления целочисленного значения левого операнда на целочисленное значение правого операнда, например: N %= 3 эквивалентно N = N % 3;.
+=
Присвоить операнду левой части сумму значений обоих операндов, например: A+=B эквивалентно A = A+B;.
-=
Присвоить операнду левой части разность значений левого и правого операндов, например: X-=4.3-Z эквивалентно X = X-(4.3-Z);.
<<=
Присвоить целочисленному операнду левой части значение, полученное сдвигом влево его битового представления на количество разрядов, равное значению правого целочисленного операнда: a<<=4 эквивалентно a = a<<4.
>>=
Присвоить целочисленному операнду левой части значение, полученное сдвигом вправо его битового представления на количество разрядов, равное значению правого целочисленного операнда: а >>= 4 эквивалентно a = a>>4.
&=
Присвоить целочисленному операнду левой части значение, полученное поразрядной конъюнкцией (И) его битового представления с битовым представлением целочисленного операнда правой части: a &= 44 эквивалентно a = a & 44.
!=
Присвоить целочисленному операнду левой части значение, полученное поразрядной дизъюнкцией (ИЛИ) его битового представления с битовым представлением целочисленного операнда правой части: a != b эквивалентно a = a!b.
^=
Присвоить целочисленному операнду левой части значение, полученное применением поразрядной операции исключающего ИЛИ к битовым представлениям значений обоих операндов: z ^= х + у эквивалентно z = z ^ (х + у).
Операторы выбора компонентов структурированного объекта
.(точка)
Прямой выбор (выделение) компонента структурированного объекта, например объединения. Формат операции:имя_структурированного_объекта.имя_компонента
->
Косвенный выбор (выделение) компонента структурированного объекта, адресуемого указателем. При использовании операции требуется, чтобы с объектом был связан указатель. Формат операции: имя_структурированного_объекта->имя_компонента
Операции с компонентами классов
.*
Прямое обращение к компоненту класса по имени объекта и указателю на компонент.
->*
Косвенное обращение к компоненту класса через указатель на объект и указатель на компонент.
::
Операция указания области видимости. Имеет две формы: бинарную и унарную. Бинарная форма применяется для доступа к компоненту класса. Унарная операция позволяет получить доступ к внешней для некоторой функции именованной области памяти.
Запятая в качестве операции
,
Несколько выражений, разделенных запятыми, вычисляются последовательно слева направо. В качестве результата сохраняются тип и значение самого правого выражения.
Скобки в качестве операций
( ) и [ ]
Играют роль бинарных операций при вызове функций и индексировании элементов массивов.

   

    На следующем шаге мы продолжим изучение операций, поддерживаемых компилятором языка программирования С++.


Предыдущий шаг Содержание Следующий шаг