Унарные (одноместные) операторы

Для изображения одноместных префиксных и постфиксных операторов используются следующие символы:

& - оператор получения адреса операнда (ранг 2);

* - оператор обращения по адресу, т.е. раскрытия ссылки, иначе оператор разыменования (доступа по адресу к значению того объекта, на который указывает операнд)- Операндом должен быть указатель (ранг 2);

- унарный минус, изменяет знак арифметического операнда (ранг 2);

+ - унарный плюс, введен для симметрии с унарным минусом (ранг 2);

~ - поразрядное инвертирование внутреннего двоичного кода целочисленного аргумента - побитовое отрицание (ранг 2);

!-логическое отрицание (НЕ) значения операнда (ранг 2). Применяется к скалярным операндам- Целочисленный результат 0 (если операнд ненулевой, т.е. истинный) или 1 (если операнд нулевой, т.е, ложный).- Напомним, что в качестве логических значении в языке используют целые числа: 0 - ложь и не нуль, т.е. (!0) - истина. Отрицанием любого ненулевого числа будет 0, а отрицанием нуля будет 1. Таким образом:!1 равно 0;!2 равно 0;!(-5) равно 0;!0 равно 1;

++ - увеличение на единицу (инкремент или авто-увеличение - ранг 2); имеет две формы:

префиксный оператор - увеличение значения операнда на 1 до его использования, Ассоциативность справа в соответствии со стандартом;

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

Операнд для оператора ++ (и для оператора --) не может быть константой либо произвольным выражением. Записи ++5 или 84++ будут неверными, ++(j+k) также неверная запись. Операндами унарных операторов ++ и -- должны быть всегда модифицируемые именующие выражения (L-value,left value, l-значение, лево-допустимое выражение). Термины "лево-допустимое выражение" и "l-значение" происходят от объяснения действия операторы присваивания E = D, в которой операнд E слева от знака операторы присваивания может быть только модифицируемым l-значением. Примером модифицируемого l-значения служит имя переменной, которой выделена память.

Таким образом, l-значение - ссылка на область памяти, значение которой доступно изменениям;

-- - уменьшение на единицу (декремент или авто-уменьшение - ранг 2) - унарныйоператор, операндом которой должно быть лево-допустимое выражение, т.е.-не константа и не выражение:

префиксный оператор - уменьшение на 1 значения операнда до его использования;

постфиксный оператор - уменьшение на 1 значения операнда после его использования;

sizeof - оператор {ранг 2) вычисления размера (в байтах) для объекта того типа, который имеет операнд. Разрешены два формата операторы:

sizeof выражение;

sizeof (тип).

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


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



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