|
Полное и подробное описание операций языка С++ дано в $$R.7. Советуем
прочитать этот раздел. Здесь же приводится краткая сводка операций и
несколько примеров. Каждая операция сопровождается одним или
несколькими характерными для нее именами и примером ее использования.
В этих примерах class_name обозначает имя класса, member - имя члена,
object - выражение, задающее объект класса, pointer - выражение, задающее
указатель, expr - просто выражение, а lvalue (адрес) - выражение,
обозначающее не являющийся константой объект. Обозначение (type) задает
имя типа в общем виде (с возможным добавлением *, () и т.д.).
Если оно указано без скобок, существуют ограничения.
Порядок применения унарных операций и операций присваивания
"справа налево", а всех остальных операций - "слева направо".
То есть, a=b=c означает a=(b=c), a+b+c означает (a+b)+c, и *p++ означает
*(p++), а не (*p)++.
Операции С++ ============================================================ :: Разрешение области видимости class_name :: member :: Глобальное :: name ____________________________________________________________ . Выбор члена object . member -> Выбор члена pointer -> member [] Индексирование pointer [ expr ] () Вызов функции expr ( expr_list ) () Структурное значение type ( expr_list ) sizeof Размер объекта sizeof expr sizeof Размер типа sizeof ( type ) ____________________________________________________________ ++ Постфиксный инкремент lvalue ++ ++ Префиксный инкремент ++ lvalue -- Постфиксный декремент lvalue -- -- Префиксный декремент -- lvalue ~ Дополнение ~ expr ! Логическое НЕ ! expr - Унарный минус - expr + Унарный плюс + expr & Взятие адреса & lvalue * Косвенность * expr new Создание (размещение) new type delete Уничтожение (освобождение) delete pointer delete[] Уничтожение массива delete[] pointer () Приведение(преобразование)типа ( type ) expr ____________________________________________________________ . * Выбор члена косвенный object . pointer-to-member ->* Выбор члена косвенный pointer -> pointer-to-member ____________________________________________________________ * Умножение expr * expr / Деление expr / expr % Остаток от деления expr % expr ____________________________________________________________ + Сложение (плюс) expr + expr - Вычитание (минус) expr - expr ____________________________________________________________ << Сдвиг влево expr << expr >> Сдвиг вправо expr >> expr ____________________________________________________________ < Меньше expr < expr <= Меньше или равно expr <= expr > Больше expr > expr >= Больше или равно expr >= expr ____________________________________________________________ == Равно expr == expr != Не равно expr != expr ____________________________________________________________ & Поразрядное И expr & expr ____________________________________________________________ ^ Поразрядное исключающее ИЛИ expr ^ expr ____________________________________________________________ | Поразрядное включающее ИЛИ expr | expr ____________________________________________________________ && Логическое И expr && expr ____________________________________________________________ || Логическое ИЛИ expr || expr ____________________________________________________________ ? : Операция условия expr? expr : expr ____________________________________________________________ = Простое присваивание lvalue = expr *= Присваивание с умножением lvalue *= expr /= Присваивание с делением lvalue /= expr %= Присваивание с взятием lvalue %= expr остатка от деления += Присваивание со сложением lvalue += expr -= Присваивание с вычитанием lvalue -= expr <<= Присваивание со сдвигом влево lvalue <<= expr >>= Присваивание со сдвигом вправо lvalue >>= expr &= Присваивание с поразрядным И lvalue &= expr |= Присваивание с поразрядным lvalue |= expr включающим ИЛИ ^= Присваивание с поразрядным lvalue ^= expr исключающим ИЛИ ____________________________________________________________ Запятая (последовательность) expr , expr ____________________________________________________________
Все операции таблицы, находящиеся между двумя ближайшими друг к другу горизонтальными чертами, имеют одинаковый приоритет. Приоритет операций уменьшается при движении "сверху вниз". Например, a+b*c означает a+(b*c), так как * имеет приоритет выше, чем +; а выражение a+b-c означает (a+b)-c, поскольку + и - имеют одинаковый приоритет, и операции + и - применяются "слева направо".