Читайте также:
|
|
Операции в С++ классифицируют по числу участвующих в них операндов или по типу действия, которое они выполняют.
При классификации по числу участвующих в них операндов операции подразделяют на:
первичные:
· () – операция, определяющая порядок выполнения операций, ограничивающая список аргументов от имени функции в вызове функции, использующаяся при образовании составных объектов;
· [] – операцияиндексации – используется как при определении массивов, так и для обращения к определенным элементам массива; первичное выражение в этой операции – имя массива, которое является адресом первого элемента массива;
·. – операция доступа к элементу структуры по имени;
· à – операциядоступа к элементу структуры по указателю.
На основе первичных операций строятся первичные выражения; в общем случае первичное выражение является исходным элементом любого выражения;
к первичному выражению относятся:
o константа (целая, вещественная, символьная, строковая, перечислимая);
o имя (имя переменной, имя_функции_операции – вводится в связи с перегрузкой операций, имя_функции_приведения – как компонента класса, ~имя_класса (обращение к деструктору));
o (выражение) – произвольное выражение, заключенное в скобки; например, обращение к функции или имя составного объекта (int (*p)[10]);
o :: идентификатор, где :: –операция указания области видимости;
o :: имя_функции-операции, :: квалифицированное_имя, 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 (тип):: |
Дата добавления: 2015-07-08; просмотров: 315 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Результат вычисления выражения характеризуется значением и типом. Операции выполняются в соответствии с их приоритетами. | | | Приоритеты (ранги) операций |