15.2. Унарные операции
Выражение с унарными операциями группируется справо на-
лево.
Унарное-выражение:
· выражение
& 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-значения.
· 195 -
При применении постфиксной операции—к L-значению ре-
зультатом является значение объекта, на который ссылается
L-значение. После того, как результат принят к сведению,
объект уменьшается точно таким же образом, как и в случае
префиксной операции --. Результат имеет тот же тип, что и
выражение L-значения.
Заключенное в круглые скобки имя типа данных,стоящее пе-
ред выражением , вызывает преобразование значения этого вы-
ражения к указанному типу. Эта конструкция называется пере-
вод (CAST). Имена типов описываются в п. 16.7.
Операция SIZEOF выдает размер своего операнда в байтах.
(Понятие байт в языке не определено, разве только как значе-
ние операции SIZEOF. Однако во всех существующих реализациях
байтом является пространство, необходимое для хранения
объекта типа CHAR). При применении к массиву результатом яв-
ляется полное число байтов в массиве. Размер определяется из
описаний объектов в выражении. Это выражение семантически
является целой константой и может быть использовано в любом
месте, где требуется константа. Основное применение эта опе-
рация находит при связях с процедурами, подобным распредели-
телям памяти, и в системах ввода- вывода.
Операция SIZEOF может быть также применена и к заключен-
ному в круглые скобки имени типа. В этом случае она выдает
размер в байтах объекта указанного типа.
Конструкция SIZEOF (тип) рассматривается как целое, так
что выражение SIZEOF (тип) - 2 эквивалентно выражению
(SIZEOF (тип)9 - 2.
15.3. Мультипликативные операции
Мультипликативные операции *, /, и % группируются слева
направо. Выполняются обычные арифметические преобразования.
Мультипликативное-выражение:
выражение * выражение
выражение / выражение
выражение % выражение
Бинарная операция * означает умножение. Операция * ассо-
циативна, и выражения с несколькими умножениями на одном и
том же уровне могут быть перегруппированы компилятором.
Бинарная операция / означает деление. При делении поло-
жительных целых осуществляется усечение по направлению к ну-
лю, но если один из операндов отрицателен, то форма усечения
зависит от используемой машины. На всех машинах, охватывае-
мых настоящим руководством, остаток имеет тот же знак , что
и делимое. Всегда справедливо, что (A/B)*B+A%B равно A (если
B не равно 0).
Бинарная операция % выдает остаток от деления первого
выражения на второе. Выполняются обычные арифметические пре-
образования. Операнды не должны быть типа FLOAT.
... основаниям. При этом философская абстракция языка оказывается неразрывно связана с основными темами и движениями философии в целом. Более конкретно, на ранние стадии традиционно рассматриваемого в рамках АФ анализа обыденного языка глубокое влияние оказала философия Дж. Э. Мура, особенно его учение о здравом смысле, согласно которому такие понятия, как «человек», «мир», «я», «внешний мир», « ...
... и других странах СНГ, а также облегчение доступа к русской и мировой культуре и науке. Таким образом, судя по данным наших исследований, востребованность русского языка осталась в республике достаточно высокой. Многие представители современной молдавской молодежи продолжают, как их отцы и деды, тянуться к русской культуре, научным и техническим достижениям России. Русский язык остается языком ...
... рисуночное словесно-слоговое письмо). Памятники среднеэламского периода (14—12 вв. до н.э.) выполнены аккадской клинописью. Памятники новоэламского периода относятся к 8—6 вв. до н.э. Был официальным языком в персидском государстве Ахеменидов в 6—4 вв. предполагается, что он, подвергшись влиянию древнеперсидского, сохранился до раннего средневековья. 7. Бурушаски язык Язык бурушаски ( ...
... /диалект), скифский, согдийский, среднеперсидский, таджикский, таджриши (язык/диалект), талышский, татский, хорезмийский, хотаносакский, шугнано-рушанская группа языков, ягнобский, язгулямский и др. Они относятся к индоиранской ветви индоевропейских языков. Области распространения: Иран, Афганистан, Таджикистан, некоторые районы Ирака, Турции, Пакистана, Индии, Грузии, Российской Федерации. Общее ...
0 комментариев