На этом шаге мы познакомимся с различными операциями, которые
используются в
языке программирования С++.
Все возможные операции делятся на две группы по числу используемых операндов: унарные и бинарные. Таблицы 1 и 2 содержат список операций.
| Получение адреса операнда. | |
| Обращение по адресу, то есть доступ по адресу к значению того объекта, на который указывает операнд. Операндом должен быть адрес. | |
| Унарный минус - изменяет знак арифметического операнда. | |
| Унарный плюс (введен для симметрии с унарным минусом). | |
| Поразрядное инвертирование внутреннего двоичного кода целочисленного аргумента (побитовое отрицание). | |
| Логическое отрицание (логическое НЕ) значения операнда. Может применяться к скалярным операндам. Результат операции равен 0, если операнд ненулевой и 1 в противном случае. В качестве логических значений в языке С++ используют целые числа: 0 - ложь, !0 (не нуль) - истина. Отрицанием любого ненулевого числа будет 0, а отрицанием нуля будет 1. Таким образом: !1 равно 0; ! (-5) равно 0; !0 равно 1. | |
| Увеличение на единицу (инкремент). Операция может быть префиксной (увеличение значения операнда на 1 до его использования) и постфиксной (увеличение значения операнда на 1 после его использования). | |
| Уменьшение на единицу (декремент). | |
| Вычисление размера (в байтах) объекта того типа, который имеет операнд. Используются два формата операции: sizeof (унарное_выражение) и sizeof (тип). |
Бинарные операции. Эти операции делятся на следующие группы:
| Бинарный плюс (сложение арифметических операндов или сложение указателя с целочисленным операндом). | |
| Бинарный минус (вычитание арифметических операндов или указателей). | |
| Умножение операндов арифметического типа. | |
| Деление операндов арифметического типа. При целочисленных операндах абсолютное значение результата округляется до целого. Например: 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. | |
| Поразрядная конъюнкция (И) битовых представлений значений целочисленных операндов. | |
| Поразрядная дизъюнкция (ИЛИ) битовых представлений значений целочисленных операндов. | |
| Поразрядное исключающее ИЛИ битовых представлений значений целочисленных операндов. | |
| Меньше, чем. | |
| Меньше или равно. | |
| Больше или равно. | |
| Больше, чем. | |
| Равно. | |
| Не равно. | |
| Конъюнкция арифметических операндов или отношений. | |
| Дизъюнкция арифметических операндов или отношений. | |
| Присвоить значение выражения-операнда из правой части операнду левой части, например: Р = 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 ^ (х + у). | |
| Прямой выбор (выделение) компонента структурированного объекта, например объединения. Формат операции:имя_структурированного_объекта.имя_компонента | |
| Косвенный выбор (выделение) компонента структурированного объекта, адресуемого указателем. При использовании операции требуется, чтобы с объектом был связан указатель. Формат операции: имя_структурированного_объекта->имя_компонента | |
| Прямое обращение к компоненту класса по имени объекта и указателю на компонент. | |
| Косвенное обращение к компоненту класса через указатель на объект и указатель на компонент. | |
| Операция указания области видимости. Имеет две формы: бинарную и унарную. Бинарная форма применяется для доступа к компоненту класса. Унарная операция позволяет получить доступ к внешней для некоторой функции именованной области памяти. | |
| Несколько выражений, разделенных запятыми, вычисляются последовательно слева направо. В качестве результата сохраняются тип и значение самого правого выражения. | |
| Играют роль бинарных операций при вызове функций и индексировании элементов массивов. | |
На следующем шаге мы продолжим изучение операций, поддерживаемых
компилятором языка
программирования С++.