Оператор ^
. Побитовый оператор XOR. Создает новое целочисленное значение, в котором каждая битовая позиция имеет значение 1
, если любой (но не оба) из операндов содержит значение 1
в этой битовой позиции. В противном случае бит получает значение 0.
Оператор |
. Побитовый оператор OR. Создает новое целочисленное значение, в котором каждая битовая позиция имеет значение 1
, если любой из операндов содержит значение 1
в этой битовой позиции. В противном случае бит получает значение 0
.
Оператор ||
. Оператор логического OR. Возвращает значение true
, если любой из операндов истинен. Правый операнд обрабатывается,
Оператор ~
. Побитовый оператор NOT. Инвертирует биты своего операнда.
Оператор ++
. Оператор инкремента. Оператор инкремента имеет две формы, префиксную и постфиксную. Префиксный оператор инкремента возвращает l-значение. Он добавляет единицу к значению операнда и возвращает полученное значение. Постфиксный оператор инкремента возвращает r-значение. Он добавляет единицу к значению операнда, но возвращает исходное, неизмененное значение. Примечание: итераторы имеют оператор ++
, даже если у них нет оператора +
.
Оператор <<
. Оператор сдвига влево. Сдвигает биты левого операнда влево. Количество позиций, на которое осуществляется сдвиг, задает правый операнд. Правый операнд должен быть нулем или положительным значением, ни в коем случае не превосходящим количества битов в левом операнде. Левый операнд должен быть беззнаковым; если левый операнд будет иметь знаковый тип, то сдвиг бита знака приведет к непредсказуемому результату.
Оператор >>
. Оператор сдвига вправо. Аналогичен оператору сдвига влево, за исключением направления перемещения битов. Правый операнд должен быть нулем или положительным значением, ни в коем случае не превосходящим количества битов в левом операнде. Левый операнд должен быть беззнаковым; если левый операнд будет иметь знаковый тип, то сдвиг бита знака приведет к непредсказуемому результату.
Оператор const_cast
. Применяется при преобразовании объекта со спецификатором const
нижнего уровня в соответствующий неконстантный тип, и наоборот.
Оператор dynamic_cast
. Используется в комбинации с наследованием и идентификацией типов во время выполнения.
Оператор reinterpret_cast
. Интерпретирует содержимое операнда как другой тип. Очень опасен и жестко зависит от машины.
Оператор sizeof
. Возвращает размер в байтах объекта, указанного по имени типа, или типа переданного выражения.
Оператор static_cast
. Запрос на явное преобразование типов, которое компилятор осуществил бы неявно. Зачастую используется для переопределения неявного преобразования, которое в противном случае выполнил бы компилятор.
Оператор (operator). Символ, который определяет действие, выполняемое выражением. В языке определен целый набор операторов, которые применяются для значений встроенных типов. В языке определен также приоритет и порядок выполнения для каждого оператора, а также задано количество операндов для каждого из них. Операторы могут быть перегружены и применены к объектам классов.
Парный оператор (binary operator). Операторы, в которых используются два операнда.
Перегруженный оператор (overloaded operator). Версия оператора, определенного для использования с объектом класса. Определение перегруженных версий операторов рассматривается в главе 14.
Порядок (associativity). Определяет последовательность выполнения операторов одинакового приоритета. Операторы могут иметь правосторонний (справа налево) или левосторонний (слева направо) порядок выполнения.
Порядок вычисления (order of evaluation). Порядок, если он есть, определяет последовательность вычисления операндов оператора. В большинстве случаев компилятор С++ самостоятельно определяет порядок вычисления операндов. Однако, прежде чем выполнится сам оператор, всегда вычисляются его операнды. Только операторы &&
, ||
, ?:
и ,
определяют порядок выполнения своих операндов.
Преобразование (conversion). Процесс, в ходе которого значение одного типа преобразуется в значение другого типа. Преобразования между встроенными типами заложены в самом языке. Для классов также возможны преобразования типов.
Преобразование (promotion).
Приведение (cast). Явное преобразование типов.
Приоритет (precedence). Определяет порядок выполнения операторов в выражении. Операторы с более высоким приоритетом выполняются прежде операторов с более низким приоритетом.
Результат (result). Значение или объект, полученный при вычислении выражения.
Составное выражение (compound expression). Выражение, состоящее из нескольких операторов.
Унарный оператор (unary operator). Оператор, использующий один операнд.