Бьерн Страуструп - Язык программирования С++. Главы 2-4 - Сводка операций

ОГЛАВЛЕНИЕ

3.2  Сводка операций

Полное и подробное описание операций языка С++ дано в $$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
____________________________________________________________

Все операции таблицы, находящиеся между двумя ближайшими друг к другу горизонтальными чертами, имеют одинаковый приоритет. Приоритет операций уменьшается при движении "сверху вниз". Например, a+b*c означает a+(b*c), так как * имеет приоритет выше, чем +; а выражение a+b-c означает (a+b)-c, поскольку + и - имеют одинаковый приоритет, и операции + и - применяются "слева направо".

____________________________________________________________
            Операции  С++ (продолжение)
============================================================
<<       Сдвиг влево                     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
____________________________________________________________