Аддитивные операции

Язык С
Строк программы, исключая математическое обеспечение Является учебным введением в центральную часть языка “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.4. Аддитивные операции

Аддитивные операции + и - группируются слева направо.

выполняются обычные арифметические преобразования. Для каж-

дой операции имеются некоторые дополнительные возможности,

связанные с типами операндов.


·     196 -

Аддитивное-выражение:

выражение + выражение

выражение - выражение

 

Результатом операции + является сумма операндов. Можно скла-

дывать указатель на объект в массиве и значение любого цело-

численного типа. во всех случаях последнее преобразуется в

адресное смещение посредством умножения его на длину объек-

та, на который указывает этот указатель. Результатом являет-

ся указатель того же самого типа, что и исходный указатель,

который указывает на другой объект в том же массиве, смещен-

ный соответствующим образом относительно первоначального

объекта. Таким образом, если P является указателем объекта в

массиве, то выражение P+1 является указателем на следующий

объект в этом массиве.

Никакие другие комбинации типов для указателей не разре-

шаются.

Операция + ассоциативна, и выражение с несколькими сло-

жениями на том же самом уровне могут быть переупорядочены

компилятором.

Результатом операции - является разность операндов. Вы-

полняются обычные арифметические преобразования. Кроме того,

из указателя может быть вычтено значение любого целочислен-

ного типа, причем, проводятся те же самые преобразования,

что и при операции сложения.

Если вычитаются два указателя на объекты одинакового ти-

па, то результат преобразуется (делением на длину объекта) к

типу INT, представляя собой число объектов, разделяющих ука-

зываемые объекты. Если эти указатели не на объекты из одного

и того же массива, то такое преобразование, вообще говоря,

даст неожиданные результаты, потому что даже указатели на

объекты одинакового типа не обязаны отличаться на величину,

кратную длине объекта.

15.5. Операции сдвига

Операции сдвига << и >> группируются слева направо. Для

обеих операций проводятся обычные арифметические преобразо-

вания их операндов, каждый из которых должен быть целочис-

ленного типа. Затем правый операнд преобразуется к типу INT;

результат имеет тип левого операнда. Результат не определен,

если правый операнд отрицателен или больше или равен, чем

длина объекта в битах.

Выражение-сдвига:

выражение << выражение

выражение >> выражение

 

Значением выражения E1<<E2 является E1 (интерпретируемое как

комбинация битов), сдвинутое влево на E2 битов; освобождаю-

щиеся биты заполняются нулем. значением выражения E1>>E2 яв-

ляется E1, сдвинутое вправо на E2 битовых позиций. Если E1

имеет тип UNSIGNE, то сдвиг вправо гарантированно будет ло-

гическим (заполнение нулем); в противном случае сдвиг может

быть (и так и есть на PDP-11) арифметическим (освобождающие-

ся биты заполняются копией знакового бита).


·     197 -

15.6. Операции отношения

Операции отношения группируются слева направо, но этот

факт не очень полезен; выражение A<B<C не означает того, что

оно казалось бы должно означать.

Выражение-отношения:

выражение < выражение

выражение > выражение

выражение <= выражение

выражение >= выражение

 

Операции < (меньше), > (больше), <= (меньше или равно) и >=

(больше или равно) все дают 0, если указанное отношение лож-

но, и 1, если оно истинно. Результат имеет тип ITN. Выполня-

ются обычные арифметические преобразования. Могут сравни-

ваться два указателя; результат зависит от относительного

расположения указываемых объектов в адресном пространстве.

Сравнение указателей переносимо только в том случае, если

указатели указывают на объекты из одного и того же массива.

15.7. Операции равенства Выражение-равенства:

выражение == выражение

выражение != выражение

 

Операции == (равно) и != (не равно) в точности аналогичны

операциям отношения, за исключением того, что они имеют бо-

лее низкий уровень старшинства. (Поэтому значение выражения

A<B==C<D равно 1 всякий раз, когда выражение A<B и C<D имеют

одинаковое значение истинности).

Указатель можно сравнивать с целым, но результат будет

машинно- независимым только в том случае, если целым являет-

ся константа 0. Гарантируется, что указатель, которому прис-

воено значение 0, не указывает ни на какой объект и на самом

деле оказывается равным 0; общепринято считать такой указа-

тель нулем.

15.8. Побитовая операция 'и' Выражение-и:

выражение & выражение

Операция & является ассоциативной, и включающие & выражения

могут быть переупорядочены. Выполняются обычные арифметичес-

кие преобразования; результатом является побитовая функция

'и' операндов. Эта операция применима только к операндам це-

лочисленного типа.

15.9. Побитовая операция исключающего 'или' Выражение-исключающего-или:

выражение ^ выражение

Операция ^ является ассоциативной, и включающие ^ выражения

могут быть переупорядочены. выполняются обычные арифметичес-

кие преобразования; результатом является побитовая функция

исключающего 'или' операндов. Операция применима только к

операндам целочисленного типа.


·     198 -

15.10. Побитовая операция включающего 'или' Выражение-включающего-или:

выражение \! Выражение

Операция \! Является ассоциативной, и содержащие \! Выраже-

ния могут быть переупорядочены. выполняются обычные арифме-

тические преобразования; результатом является побитовая фун-

кция включающего 'или' операндов. Операция применима только

к операндам целочисленного типа.

15.11. Логическая операция 'и' Выражение-логического-и:

выражение && выражение

Операция && группируется слева направо. Она возвращает 1,

если оба ее операнда отличны от нуля, и 0 в противном слу-

чае. В отличие от & операция && гарантирует вычисление слева

направо; более того, если первый операнд равен 0, то значе-

ние второго операнда вообще не вычисляется.

Операнды не обязаны быть одинакового типа, но каждый из

них должен быть либо одного из основных типов, либо указате-

лем. результат всегда имеет тип ITN.

15.12. Операция логического 'или' Выражение-логического-или:

выражение \!\! выражение

Операция \!\! Группируется слева направо. Она возвращает 1,

если один из операндов отличен от нуля, и 0 в противном слу-

чае. В отличие от операции \! Операция \!\! Гарантирует вы-

числение слева направо; более того, если первый операнд от-

личен от нуля, то значение второго операнда вообще не вычис-

ляется.

Операнды не обязаны быть одинакового типа, но каждый из

них должен быть либо одного из основных типов, либо указате-

лем. Результат всегда имеет тип INT.

15.13. Условная операция Условное-выражение:

выражение ? выражение : выражение

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

значение первого выражения, и если оно отлично от нуля, то

результатом будет значение второго выражения; в противном

случае результатом будет значение третьего выражения. Если

это возможно, проводятся обычные арифметические преобразова-

ния, с тем, чтобы привести второе и третье выражения к обще-

му типу; в противном случае, если оба выражения являются

указателями одинакового типа, то результат имеет тот же тип;

в противном случае одно выражение должно быть указателем, а

другое - константой 0, и результат будет иметь тип указате-

ля. Вычисляется только одно из второго и третьего выражений.


·     199 -


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

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

Скачать
48443
0
0

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

Скачать
43709
0
0

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

Скачать
39778
0
1

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

Скачать
64931
0
0

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

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


Наверх