На этом шаге мы познакомимся с различными операциями, которые
используются в
языке программирования С++.
Все возможные операции делятся на две группы по числу используемых
операндов: унарные
и бинарные. Таблицы 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 ^ (х + у). |
Операторы выбора компонентов структурированного объекта |
|
.(точка) | Прямой выбор (выделение) компонента структурированного объекта, например объединения. Формат операции:имя_структурированного_объекта.имя_компонента |
-> | Косвенный выбор (выделение) компонента структурированного объекта, адресуемого указателем. При использовании операции требуется, чтобы с объектом был связан указатель. Формат операции: имя_структурированного_объекта->имя_компонента |
Операции с компонентами классов |
|
.* | Прямое обращение к компоненту класса по имени объекта и указателю на компонент. |
->* | Косвенное обращение к компоненту класса через указатель на объект и указатель на компонент. |
:: | Операция указания области видимости. Имеет две формы: бинарную и унарную. Бинарная форма применяется для доступа к компоненту класса. Унарная операция позволяет получить доступ к внешней для некоторой функции именованной области памяти. |
Запятая в качестве операции |
|
, | Несколько выражений, разделенных запятыми, вычисляются последовательно слева направо. В качестве результата сохраняются тип и значение самого правого выражения. |
Скобки в качестве операций |
|
( ) и [ ] | Играют роль бинарных операций при вызове функций и индексировании элементов массивов. |
На следующем шаге мы продолжим изучение операций, поддерживаемых
компилятором языка
программирования С++.
Предыдущий шаг
Содержание
Следующий шаг