Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л_4_Операции_и_выражения.doc
Скачиваний:
10
Добавлен:
05.11.2018
Размер:
660.99 Кб
Скачать

Классификация операций

Операции в С++ классифицируют по числу участвующих в них операндов или по типу действия, которое они выполняют.

При классификации по числу участвующих в них операндов операции подразделяют на:

первичные:

  • ( ) – операция, определяющая порядок выполнения операций, ограничивающая список аргументов от имени функции в вызове функции, использующаяся при образовании составных объектов;

  • [] – операция индексации – используется как при определении массивов, так и для обращения к определенным элементам массива; первичное выражение в этой операции – имя массива, которое является адресом первого элемента массива;

  • . – операция доступа к элементу структуры по имени;

  •  – операция доступа к элементу структуры по указателю.

На основе первичных операций строятся первичные выражения; в общем случае первичное выражение является исходным элементом любого выражения;

к первичному выражению относятся:

  • константа (целая, вещественная, символьная, строковая, перечислимая);

  • имя (имя переменной, имя_функции_операции – вводится в связи с перегрузкой операций, имя_функции_приведения – как компонента класса, ~имя_класса (обращение к деструктору));

  • (выражение) – произвольное выражение, заключенное в скобки; например, обращение к функции или имя составного объекта (int (*p)[10]);

  • ::идентификатор, где :: операция указания области видимости;

  • ::имя_функции-операции, ::квалифицированное_имя, this – это представители первичных выражений, смысл которых станет ясен при рассмотрении классов и объектов;

унарные, выполняющие действия только над одним операндом:

& – операция получения адреса операнда,

* – операция обращения по указателю (операция разыменования), доступа по адресу к значению того объекта, на которое указывает операнд; операндом должен быть адрес (указтель),

- – унарный минус, операция изменения знака,

+ – унарный плюс, введен для симметрии с унарным минусом,

~ – поразрядное инвертирование внутреннего двоичного кода целочисленного аргумента (побитовое отрицание),

! – логическое отрицание (НЕ) значения операнда (0 – ложь, ≠0– истина; !0 равно 1; !(-3) равно 0; !1 равно 0),

++ – увеличение на 1 (инкремент или автоувеличение) значения операнда; префиксная форма операции – увеличение значения операнда на 1 до использования его значения; постфиксная форма операции – увеличение значения операнда на 1 после использования его значения; операнд не может быть константой или произвольным выражением, а только модифицируемым леводопустимым выражением,

-- – уменьшение на 1 (декремент или автоуменьшение) значения операнда; префиксная форма операции – уменьшение значения операнда на 1 до использования его значения; постфиксная форма операции – уменьшение значения операнда на 1 после использования его значения; операнд не может быть константой или произвольным выражением, а только модифицируемым леводопустимым выражением,

throw – операция генерации исключения,

typeid – операция определения типа операнда: typeid (выражение) – для идентификации на этапе компиляции типа значения выражения; typeid (имя_типа) – для идентификации типа на этапе компиляции программы;

(тип) – операция преобразования (приведения) типов; не изменяя самого операнда, операция преобразует его значение к типу, обозначение которого помещено в скобках; (long)1 – внутреннее представление имеет длину 4 байта; (char)1 – внутреннее представление имеет длину 1 байт; (float)1 – внутреннее представление имеет длину 4 байта и изменяется структура внутреннего представления; при преобразовании вещественного значения к целочисленному типу возможна ошибка при выходе полученного значения за диапазон допустимых значений для целых и результат зависит от реализации,

тип () – функциональная форма преобразования типа; может использоваться только в тех случаях, когда тип имеет простое (несоставное) наименование,

dynamic_cast – операция приведения типов с проверкой допустимости приведения во время выполнения кода программы,

static_cast – операция приведения типов (обычно «родственных») с проверкой допустимости приведения во время компиляции,

reinterpret_cast – операция приведения типов без проверки допустимости приведения во время выполнения кода программы,

const_cast – операция приведения типов, которая аннулирует действие модификатора const ,

sizeof() – операция вычисления в байтах размера памяти операнда; sizeof (выражение) или sizeof (тип),

:: – унарная операция изменения (указания, разрешения) области видимости, операция указания контекста, позволяет получить из тела функции доступ к внешнему для функции объекту (например, к переменной),

new – операция для динамического выделения памяти,

delete – операция для освобождения динамически выделенной памяти.

бинарные, требующие для выполнения два операнда; в эту группу входит большинство операций;

тернарные – тройная условная операция ?:.

По типам выполняемых действий операции подразделяют на:

арифметические

+ - * / % - (изменение знака)

увеличения и уменьшения

++ --

присваивания

= *= /= %= += -= <<= >>= &= | = ^=

отношения

< <= > >= == !=

логические

&&(и) ||(или) !(не)

поразрядные логические и сдвига

& | ^ ~ << >>

адресные

& *

дополнительные

?: , ( ) [ ]  . * .* sizeof (тип) ::