Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Brian_Kernighan_Dennis_Ritchie-The_C_Programming_Language-RU.pdf
Скачиваний:
39
Добавлен:
17.03.2018
Размер:
2.45 Mб
Скачать

А 7.3.4. Постфиксные операторы инкремента и декремента

Постфиксное выражение, за которым следует ++ или --, есть постфиксное выражение. Значением такого выражения является значение его операнда. После того как значение было взято, операнд увеличивается (++) или уменьшается (--) на 1. Операнд должен быть lvalue; информация об ограничениях, накладываемых на операнд, и деталях операций содержится в А7.7, где обсуждаются аддитивные операторы, и в А7.17, где рассматривается присваивание. Результат инкрементирования или декрементирования не есть lvalue.

А 7.4. Унарные операторы

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

унарное-выражение: постфиксное-выражение ++ унарное-выражение -- унарное-выражение

унарный-оператор выражение-приведенное-к-типу sizeof унарное-выражение

sizeof ( имя-типа )

унарный-оператор: один из

 

&

*

+

~

!

А 7.4.1. Префиксные операторы инкремента и декремента

Унарное выражение, перед которым стоит ++ или --, есть унарное выражение. Операнд увеличивается (++) или уменьшается (--) на 1.

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

А 7.4.2. Оператор получения адреса

Унарный оператор & обозначает операцию получения адреса своего операнда. Операнд должен быть либо lvalue, не ссылающимся ни на битовое поле, ни на объект, объявленный как register, либо иметь тип "функция". Результат — указатель на объект (или функцию), адресуемый этим lvalue. Если тип операнда есть Т, то типом результата является "указатель на Т".

А 7.4.3. Оператор косвенного доступа

Унарный оператор * обозначает операцию косвенного доступа (раскрытия указателя), возвращающую объект (или функцию), на который указывает ее операнд. Результат есть lvalue, если операнд — указатель на объект арифметического типа или на объект типа "структура", "объединение" или "указатель". Если тип выражения

— "указатель на Т", то тип результата — Т.

А 7.4.4. Оператор унарный плюс

Операнд унарного + должен иметь арифметический тип, результат — значение операнда. Целочисленный операнд подвергается целочисленному повышению. Типом результата является повышенный тип операнда. Унарный + был добавлен для симметрии с унарным -.

А 7.4.5. Оператор унарный минус

Операнд для унарного - должен иметь арифметический тип, результат — значение операнда с противоположным знаком. Целочисленный операнд подвергается целочисленному повышению. Отрицательное значение от беззнаковой величины вычисляется вычитанием из nmax+1 приведенного к повышенному типу операнда, где nmax — максимальное число повышенного типа; однако минус нуль есть нуль. Типом результата будет повышенный тип операнда.

Соседние файлы в предмете Программирование