Унарные, бинарные и тернарное выражения

Лекция №2

Операции и Выражения

Операнд - это константа, литерал, идентификатор, вызов функции, индексное выражение, выражение выбора элемента или более сложное выражение, сформированное комбинацией операндов, знаков операций и круглых скобок. Любой операнд, который имеет константное значение, называется константным выражением. Каждый операнд имеет тип.

Знаки операций определяют действия, которые должны быть выполнены над операндами.

Комбинация знаков операций и операндов, результатом которой является определенное значение, называется выражением. Каждый операнд в выражении может быть выражением. Значение выражения зависит от расположения знаков операций и круглых скобок в выражении, а также от приоритета выполнения операций.

Lvalues и Rvalues выражения

Lvalues –выражение (или именующее выражение) представляет собой локатор объекта, выражение, которое обозначает объект.

Модифицируемое именующее выражение – это идентифицирующее выражение, относящееся к объекту, к которому возможен доступ и допустимо его изменение в памяти. Так значения констант, описанные в модификаторе const, не являются модифицируемыми именующими выражениями. Исторически в слове Lvalues буква L означает «левый» (Left). Это означает, что Lvalue допускается в левой части оператора присваивания. Здесь в левой части оператора присваивания допустимы только модифицируемые именующие выражения. Например, если а и с – это не являющиеся константами целочисленные идентификаторы с правильно распределенными для них областями памяти, то оба они являются модифицируемыми именующими выражениями, и присваивания типа а=1; с=а+с; вполне допустимы.

Rvalues –выражения называют значением переменной (значением правой части выражения). Исторически в слове Rvalues буква R означает «правый» (Right).Так, например, выражение с+а не является именущим (присваивание типа с+а=с недопустимо), но является Rvalue –выражением.

Унарные, бинарные и тернарное выражения

Унарное выражение состоит из операнда и предшествующего ему знаку унарной операции и имеет следующий формат:

ЗнакУнарнойОперации Выражение.

Бинарное выражения состоит из двух операндов, разделенных знаком бинарной операции:

Выражение1 ЗнакБинарнойОперации Выражение2.

Тернарное выражение состоит из трех операндов, разделенных знаками тернарной операции (?) и (:), и имеет формат:

Выражение1? операнд2: операнд3.

По количеству операндов, участвующих в операции, операции подразделяются на унарные, бинарные и тернарные.

Унарные операции выполняются справа налево.

Операции увеличения и уменьшения увеличивают или уменьшают значение операнда на единицу и могут быть записаны как справа так и слева от операнда. Если знак операции записан перед операндом (префиксная форма), то изменение операнда происходит до его использования в выражении. Если знак операции записан после операнда (постфиксная форма), то операнд вначале используется в выражении, а затем происходит его изменение.

Таблица 7 Унарные операции

Знак операции Операция Группа операций
+ Унарный плюс Аддитивные
- Отрицание
++ Увеличение
-- Уменьшение
~ Поразрядное отрицание(дополнение) Поразрядные операции
! Логическое отрицание Логические операции
* Разадресация (косвенная адресация) Адресные операции
& Вычисление адреса
Sizeof Размер Size-операция

В отличие от унарных, бинарные операции, список которых приведен в табл.8, выполняются слева направо.

Таблица 8 Бинарные операции

Знак операции Операция Группа операций
* Умножение Мультипликативные
/ Деление
% Остаток от деления
+ Сложение Аддитивные
- Вычитание
<< Сдвиг влево Операции сдвига
>> Сдвиг вправо
< Меньше Операции отношения
<= Меньше или равно
>= Больше или равно
== Равно
!= Не равно
& Поразрядное И Поразрядные операции
| Поразрядное ИЛИ
^ Поразрядное исключающее ИЛИ
&& Логическое И Логические операции
|| Логическое ИЛИ
, Последовательное вычисление Последовательного вычисления
= Присваивание Операции присваивания
*= Умножение с присваиванием
/= Деление с присваиванием
%= Остаток от деления с присваиванием
-= Вычитание с присваиванием
+= Сложение с присваиванием
<<= Сдвиг влево с присваиванием
>>= Сдвиг вправо присваиванием
&= Поразрядное И с присваиванием
|= Поразрядное ИЛИ с присваиванием
^= Поразрядное исключающее ИЛИ с присваиванием

При вычислении выражений тип каждого операнда может быть преобразован к другому типу. Преобразования типов могут быть неявными, при выполнении операций и вызовов функций, или явными, при выполнении операций приведения типов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: