Выражение с унарными операциями группируется справо на-лево. Унарное-выражение: * выражение & L-значение - выражение ! Выражение \^ выражение ++ L-значение -- L-значение L-значение ++ L-значение -- (имя-типа) выражение SIZEOF выражение SIZEOF имя-типа Унарная операция * означает косвенную адресацию: выраже-ние должно быть указателем, а результатом является L-значе-ние, ссылающееся на тот объект, на который указывает выраже-ние. Если типом выражения является "указатель на...", то ти-пом результата будет "...". Результатом унарной операции & является указатель наобъект, к которому ссылается L-значение. Если L-значениеимеет тип "...", то типом результата будет "указатель на...". Результатом унарной операции - (минус) является ее опе-ранд, взятый с противоположным знаком. Для величины типаUNSIGNED результат получается вычитанием ее значения из 2**N(два в степени N), где N-число битов в INT. Унарной операции+ (плюс) не существует. Результатом операции логического отрицания ! Является 1,если значение ее операнда равно 0, и 0, если значение ееоперанда отлично от нуля. Результат имеет тип INT. Эта опе-рация применима к любому арифметическому типу или указате-лям. Операция \^ дает обратный код, или дополнение до едини-цы, своего операнда. Выполняются обычные арифметические пре-образования. Операнд должен быть целочисленного типа. Объект, на который ссылается операнд L-значения префикс-ной операции ++, увеличивается. значением является новоезначение операнда, но это не L-значение. Выражение ++х экви-валентно х+=1. Информацию о преобразованиях смотри в разбореоперации сложения (п. 15.4) и операции присваивания (п.15.14). Префиксная операция -- аналогична префиксной операции++, но приводит к уменьшению своего операнда L-значения. При применении постфиксной операции ++ к L-значению ре-зультатом является значение объекта, на который ссылаетсяL-значение. После того, как результат принят к сведению,объект увеличивается точно таким же образом, как и в случаепрефиксной операции ++. Результат имеет тот же тип, что ивыражение L-значения. При применении постфиксной операции -- к L-значению ре-зультатом является значение объекта, на который ссылаетсяL-значение. После того, как результат принят к сведению,объект уменьшается точно таким же образом, как и в случаепрефиксной операции --. Результат имеет тот же тип, что ивыражение L-значения. Заключенное в круглые скобки имя типа данных,стоящее пе-ред выражением , вызывает преобразование значения этого вы-ражения к указанному типу. Эта конструкция называется пере-вод (CAST). Имена типов описываются в п. 16.7. Операция SIZEOF выдает размер своего операнда в байтах.(Понятие байт в языке не определено, разве только как значе-ние операции SIZEOF. Однако во всех существующих реализацияхбайтом является пространство, необходимое для храненияобъекта типа CHAR). При применении к массиву результатом яв-ляется полное число байтов в массиве. Размер определяется изописаний объектов в выражении. Это выражение семантическиявляется целой константой и может быть использовано в любомместе, где требуется константа. Основное применение эта опе-рация находит при связях с процедурами, подобным распредели-телям памяти, и в системах ввода- вывода. Операция SIZEOF может быть также применена и к заключен-ному в круглые скобки имени типа. В этом случае она выдаетразмер в байтах объекта указанного типа. Конструкция SIZEOF (тип) рассматривается как целое, такчто выражение SIZEOF (тип) - 2 эквивалентно выражению(SIZEOF (тип)9 - 2.