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