Операции отрицания

Операции инкремент и декремент

Бинарные и тернарные операции

Унарные

Операции

Выражения

Выражение состоит из операндов и знаков операции и используется для вычисления значения определенного типа.

Приоритет Действие
  + + увеличить на 1 - - уменьшить на 1
  ~ поразрядное отрицание ! логическое отрицание - арифметическое отрицание
  + унарный плюс
  & взятие адреса
  * разыменование разадресация
  (type) преобразование типа
  sizeof размер
Приоритет Действие
  * умножение / деление % остаток от деления
  + сложение - вычитание
  << сдвиг влево >> сдвиг вправо
  < меньше <= меньше или равно > больше >= больше или равно
  = = равно ! = не равно
  & поразрядная конъюнкция И
  ^ поразрядное исключающее ИЛИ
  | поразрядная дизъюнкция
  && логическое И
  | | логическое ИЛИ
  ?: условная операция (тернарная)
  = присваивание * = умножение с присваиванием / = деление с присваиванием % = остаток от деления с присваиванием + = сложение с присваиванием - = вычитание с присваиванием << = сдвиг влево с присваиванием >> = сдвиг вправо с присваиванием & = поразрядное И с присваиванием | = поразрядное ИЛИ с присваиванием ^ = поразрядное искл. ИЛИ с присваиванием
  , последовательное вычисление

Каждый операнд может быть выражением, или в частном случае – константой или переменной.

Если операции одного приоритета, то

§ справа налево вычисляются

- унарные операции,

- условная операция,

- операция присваивания a=b=c равносильно a=(b=c).

§ слева направо вычисляются все остальные.

a+b+с равносильно (a+b)+c,

a>b>c равносильно (a>b)>c.

Для изменения порядка вычислений используют круглые скобки.

Результат вычисления выражения имеет значение и тип. Если операнды имеют одинаковый тип, тот же тип имеет результат выражения.

Если типы операндов различны, то перед вычислением выполняются преобразования типов (от более коротких к более длинным для сохранения значимости и точности).

При этом может измениться внутреннее представление (int ® float) или интерпретация внутреннего представления (char ® unsigned short int).

+ + и - - две формы записи:

префиксная <операция> <операнд>

постфиксная <операнд> <операция>

Префиксная форма:

Операнд изменяется, новое значение – результат выражения.

Постфиксная форма:

Результат выражения – исходное значение операнда, после вычисления выражения операнд изменяется.

Операнд – в общем случае это L – значение.

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

b=1;

a= + + b; (a=2, b=2)

c=b + +; (c=2, b=3)

b=4;

c= b - -; (c=4, b=3)

a= - - b; (a=2, b=2)

int x = 3, y;

арифметическое

y = -x; /*y=-3*/;

поразрядное

y= ~ x; /*y= 0011 -> 1100 -> -4;*/

логическое

y=!x; /* y= 0*/


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



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