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

Язык С
Строк программы, исключая математическое обеспечение Является учебным введением в центральную часть языка “C” Hачинаем. Единственный способ освоить новый язык Оператор FOR Набор полезных программ Подсчет символов Подсчет слов Функции Аргументы - вызов по значению Область действия: внешние переменные Резюме Константы Описания Преобразование типов До 9 и буквы от а до F Операции и выражения присваивания Старшинство и порядок вычисления Операторы и блоки Переключатель Цикл DO - WHILE Оператор CONTINUE Основные сведения Функции, возвращающие нецелые значения Еще об аргументах функций Правила, определяющие область действия Статические переменные Блочная структура Рекурсия Указатели и адреса Указатели и массивы Адресная арифметика Указатели символов и функции Указатели - не целые До 12, а не от 0 до 11. Так как за экономию памяти у нас пока не награждают, такой способ проще, чем подгонка индек-сов Инициализация массивов указателей Указатели на функции Структуры Структуры и функции Указатели на структуры Мы продемонстрируем, как правильно выполнить эту задачу Поля Определение типа Обращение к стандартной библиотеке Форматный вывод - функция PRINTF Форматный ввод - функция SCANF Форматное преобразование в памяти Обработка ошибок - STDERR и EXIT Обращение к системе Низкоуровневый ввод/вывод - операторы READ и WRITE Произвольный доступ - SEEK и LSEEK Пример - распечатка справочников Пример - распределитель памяти Константы Синтаксическая нотация Преобразования Первичные выражения Унарные операции Аддитивные операции Операция присваивания Спецификаторы типа Описание структур и объединений Инициализация TYPEDEF Оператор SWITCH Внешнее определение функции Область действия внешних идентификаторов Неявные описания Явные преобразования указателей Анахронизмы Операторы
439386
знаков
0
таблиц
0
изображений

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.


Информация о работе «Язык С»
Раздел: Информатика, программирование
Количество знаков с пробелами: 439386
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
48443
0
0

... основаниям. При этом философская абстракция языка оказывается неразрывно связана с основными темами и движениями философии в целом. Более конкретно, на ранние стадии традиционно рассматриваемого в рамках АФ анализа обыденного языка глубокое влияние оказала философия Дж. Э. Мура, особенно его учение о здравом смысле, согласно которому такие понятия, как «человек», «мир», «я», «внешний мир», « ...

Скачать
43709
0
0

... и других странах СНГ, а также облегчение доступа к русской и мировой культуре и науке. Таким образом, судя по данным наших исследований, востребованность русского языка осталась в республике достаточно высокой. Многие представители современной молдавской молодежи продолжают, как их отцы и деды, тянуться к русской культуре, научным и техническим достижениям России. Русский язык остается языком ...

Скачать
39778
0
1

... рисуночное словесно-слоговое письмо). Памятники среднеэламского периода (14—12 вв. до н.э.) выполнены аккадской клинописью. Памятники новоэламского периода относятся к 8—6 вв. до н.э. Был официальным языком в персидском государстве Ахеменидов в 6—4 вв. предполагается, что он, подвергшись влиянию древнеперсидского, сохранился до раннего средневековья. 7. Бурушаски язык Язык бурушаски ( ...

Скачать
64931
0
0

... /диалект), скифский, согдийский, среднеперсидский, таджикский, таджриши (язык/диалект), талышский, татский, хорезмийский, хотаносакский, шугнано-рушанская группа языков, ягнобский, язгулямский и др. Они относятся к индоиранской ветви индоевропейских языков. Области распространения: Иран, Афганистан, Таджикистан, некоторые районы Ирака, Турции, Пакистана, Индии, Грузии, Российской Федерации. Общее ...

0 комментариев


Наверх