Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по программированию и алгоритмизаци...doc
Скачиваний:
31
Добавлен:
05.09.2019
Размер:
2.24 Mб
Скачать

Операции увеличения и уменьшения значения

++ Инкремент, или операция увеличения на единицу

Точнее, на величину, кратную единице, поскольку всё зависит от типа операнда. Операция имеет дополнительный эффект – она изменяет значение операнда. Поэтому операндом здесь может быть только леводопустимое выражение арифметического типа, либо типа указателя. В C++ различают префиксную и постфиксную операции инкремента.

В префиксной форме увеличение значения операнда производится до определения значения выражения. В результате значение выражения и значение операнда совпадают.

В постфиксной форме увеличение значения операнда производится после определения значения выражения. Поэтому значение выражения оказывается меньше значения операнда.

В выражении с префиксной операцией увеличения знак ++ записывается слева от операнда, в выражении с постфиксной операцией – справа.

Операция инкремента по отношению к указателю увеличивает значение операнда на количество байт, равное длине одного объекта этого типа, то есть действительно на величину, кратную единице.

-- Операция уменьшения значения операнда

на величину, кратную единице (декремент)

Эта операция в буквальном смысле симметрична операции инкремента. Имеет аналогичный дополнительный эффект, соответствующие ограничения для операнда (свойство леводопустимости, арифметический тип, либо тип указателя, префиксную и постфиксную формы, изменение значения адреса).

В выражении с префиксной операцией увеличения знак -- записывается слева от операнда, в выражении с постфиксной операцией – справа.

Операции динамического распределения памяти

new Операция выделения памяти

Позволяет выделить и сделать доступным участок в динамической памяти. В качестве операнда используется имя типа и, возможно, выражение инициализатор. Операция возвращает адрес размещённого в памяти объекта.

delete Операция освобождения памяти

Освобождает ранее выделенную с помощью операции new область динамической памяти. В качестве операнда используется адрес освобождаемой области памяти.

Операция доступа

:: Операция доступа

Обеспечивает обращение к именованной глобальной области памяти, находящейся вне области видимости. Эта операция применяется при работе с одноимёнными объектами, расположенными во вложенных областях действия имён. Когда объект во внутренней области действия имени скрывает одноименный объект, областью действия которого является файл.

Например:

int m; // Глобальная переменная

:::::

int mmm()

{

int m; // Локальная переменная

m = 100; // Присвоение значения локальной переменной

::m = 125; // Присвоение значения глобальной переменной m, находящейся

// вне области видимости имени

}

Операция обеспечивает доступ лишь к глобальным, естественно, ранее объявленным объектам, независимо от степени вложенности области действия. Поэтому она не обладает свойством транзитивности. Выражения вида ::(::(::m)) воспринимаются транслятором как ошибочные.

Бинарные операции

Аддитивные операции

+ Операция сложения

Операция используется с операндами арифметического типа. Один из операндов может иметь тип указателя. В любом случае значением выражения является либо сумма значений, либо сумма адреса и целочисленного значения, кратного размерам данного типа.

Результат сложения указателя с целым числом эквивалентен результату соответствующего количества операций инкремента, применённых к указателю.

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

- Операция вычитания

Симметричная по отношению к операции сложения бинарная операция.