Операционная система UNIX. Руководство программиста




Унарные операции


Выражения с унарными операциями группируются справа налево.

унарное_выражение: * выражение & л_значение - выражение ! выражение ~ выражение ++ л_значение -- л_значение л_значение ++

л_значение --

( имя_типа ) выражение sizeof выражение sizeof ( имя_типа )

Унарная операция * вызывает "переход к значению"; операнд должен быть указателем, результатом является л_значение, обозначающее объект, на который указывает операнд. Если тип операнда - "указатель на ...", то тип результата - "...".

Результатом унарной операции & является указатель на объект, который обозначен л_значением. Если тип л_значения - "...", то тип результата - "указатель на ...".

Результат унарной операции - равен значению операнда, взятому с противоположным знаком. Выполняются обычные арифметические преобразования. Число, противоположное беззнаковому, вычисляется вычитанием операнда из (2n), где n - число бит в соответствующем знаковом типе.

Унарная операция + отсутствует.

Результат операции логического отрицания ! равен единице, если значение операнда равно нулю, и нулю, если значение операнда ненулевое. Тип результата - int. Операция применима к любому арифметическому типу и к указателям.

Операция ~ дает побитное отрицание своего операнда. Выполняются обычные арифметические преобразования. Тип операнда должен быть целочисленным.

При выполнении префиксной операции ++ объект, который обозначается операндом-л_значением, увеличивается на единицу. Результат равен новому значению операнда, однако он не является л_значением. Выражение ++x эквивалентно x += 1. (См. информацию о преобразованиях в пунктах Аддитивные операции и Операции присваивания).

Операнд-л_значение префиксной операции -- уменьшается на единицу по аналогии с префиксной операцией ++.

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




Содержание  Назад  Вперед