46019 (665326), страница 14

Файл №665326 46019 (Turbo C++ Programer`s guide) 14 страница46019 (665326) страница 142016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 14)

Именующие выражения определяются на стр.28 оригинала.

Операция указателя структуры/объединения ->

В выражении

постфиксное-выражение -> идентификатор

должно иметьтип указателя структуры или указателя объединения; идентификатор же должен быть именем компонента этой структурыили объединения. Выражение обозначает объект - компонент структуры или объединения. Значением данного выражения будет являться значение выбранного таким образом компонента; оно будет являться именующим выражением (lvalue) в том и только том случае, если именующим выражением является само постфиксное выражение.

Операция постфиксного инкремента ++

В выражении

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

операндом является постфиксное выражение:

оно должно быть скалярного типа (арифметического или типа указателя) и должно являться модифицируемым именующим выражением (более подробная информация об именующих выражениях приводится на стр.28 оригинала.) Постфикс ++ также называют операцией постинкремента. Значением всего выражения является значение постфиксного выражения до выполнения инкремента. После вычисления постфиксного выражения операнд инкрементируется на 1.

Величина инкремента зависит от типа операнда. Значения типа указателя вычисляются по правилам арифметических действий с указателями.

Постфиксная операция декремента --

Постфиксная операция декремента, также известная как постдекремент, подчиняется тем же правилам, что и операция постфиксного инкремента, за исключением того, что единица после вычислениявыражения вычитается.

Операции инкремента и декремента

Первыми двумя унарными операциями являются операции ++ и --. Эти операции бывают как постфиксными, так и префиксными, и поэтому обсуждаются в данногмразделе. Затем рассматриваются остальные шесть префиксных операций.

Операция префиксного инкремента ++

В выражении

++ унарное-выражение

операндом является унарное выражение:

оно должно быть скалярного типа (арифметического или типа указателя) и должно являться модифицируемым именующим выражением. Операцию префиксного инкремента также называют операцией преинкремента. Операнд инкрементируется на 1 до вычисления выражения; значением всего выражения является инкрементированное значение операнда. Величина инкремента зависит от типа операнда. Значения типа указателя вычисляются по правилам арифметических действий с указателями.

Префиксная операция декремента --

Префиксная операция декремента, также известная как предекремент, имеет следующий синтаксис:

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

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

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

Существует шесть унарных операций (кроме ++ и --): . * + - тильда и !. Их синтаксис:

унарная-операция выражение-приведения

выражение-приведения:

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

(имя-типа) выражение-приведения

Операция адресации &

Символ & также используется в С++ для задания ссылочных типов данных. См. стр.98 оригинала.

Операции& и * (операция * описана в следующем разделе) используются совместно в качестве операций установки ссылки и ображения по ссылке (разыменования). В выражении

& выражение-приведения

операнд выражение-приведениядолженявляться либо обозначением функции, либо именующим выражением, обозначающим объект, не являющийся битовымполем и не имеющий спецификатор класса памяти register. Если операнд имеет некоторый тип type, то результатом операции будет указатель на type.

Отметим, что некоторые не являющиеся именующим выражением идентификаторы, такие как имена функций и имена массивов, автоматически преобразовываются в определенном контексте к типу "указатель на X". Операцию & использовать с такими объектами можно, но такая операция будет являться избыточной и будет отменена компилятором.

Рассмотрим следующий фрагмент:

type t1 =1, t2 = 2;

type *ptr = &t1; // инициализированный указатель

*ptr = t2; // тот же эффект, что и t1 = t2

Отметим, что type *ptr = &t1 обрабатывается как

T *ptr; ptr = &t1;

так что присваивается не *ptr, а ptr. После инициализации ptrадресом&t1 его можно использовать для обращения по ссылке и получить именующее выражение *ptr.

Операция обращения по ссылке *

В выражении

* выражение-приведения

операнд выражение-приведения должен иметь тип "указатель на type", где type это любой тип. Результатом обращения по ссылке имееттип type.Если операнд имеет тип "указатель функции", то результатом будет являться обозначение функции; если операндом является указатель на объект, то результатом будет именующее выражение, обозначающее данный объект. В следующих ситуациях результат обращения по ссылке неопределен:

1. Выражение-приведения это пустой (null) указатель.

2. Выражение-приведения это адрес динамической локальной переменной, а выполнение объемлющего блока уже завершено.

Унарная операция плюс +

В выражении

+выражение-приведения

операнд выражение-приведения должен быть

арифметического типа. Результатом является значение операнда

после любых требуемых интегральных действий.

Унврная операция минус -

В выражении

-выражение-приведения

операнд выражение-приведения должен быть арифметического типа. Результатом является отрицательное значение операнда после любых требуемых интегральных действий.

Операция поразрядного дополнения (тильда)

В выражении

выражение-приведения

операнд выражение-приведения должен быть интегрального типа.Результатом является поразрядное дополнение операнда после любых требуемых интегральных действий. Каждый бит со значением 0 устанавливается в 1, а каждый единичный бит операнда устанавливается в 0.

Операция логического отрицания !

В выражении

!выражение-приведения

операнд выражение-приведения должен быть скалярного типа. Результат иммет тип int и представляет собой логическое отрицание операнда: 0 при ненулевом операнде и 1 в случае нулевого операнда. Выражение !E эквивалентно выражению (0 ==

Е).

Операция sizeof

Существует два раздельных способа использования операции sizeof:

sizeof унарное-выражение

sizeof (имя-типа)

Размер выделяемой для каждого типа памяти зависит от конкретной машины.

В обоихсучаяхрезультат представляет собой целочисленную константу, выражающую размер в байтах областипамяти, занимаемой операндом (определяемый за некоторыми исключениями типом операнда). В первом случае тип выражения операнда определяется без расчета выражения (и следовательно, без побочных эффектов). Если операнд имеет тип char (signed или unsigned), то операция sizeof дает в результате1. Если операнд не является параметром и имеет тип масива, то результат представляет собой общее количество байтов в массиве (другими словами, имя массива не преобразовавается к типу указателя). Число элементов массива равно sizeof массив/sizeof массив[0].

Если операнд является параметром, объявленным как массив или функция, sizeof дает размер указателя. Применительно к структурам и объединениям sizeof дает общее число байтов, включающее любые символы-заполнители.

Целочисленный тип результата операцииsizeof называется size_t, определенный как unsigned int в stddef.h.

Можно использовать sizeof в директивах препроцессора; это особенность Turbo C++.

C++: В С++ sizeof(тип класса), где тип класса является производным от какого-либо базового класса, возвращает размер базового класса.

Операции типа умножения

Существует три операции типа умножения: * / и %. Синтаксис этих операций следующий:

выражение-типа-умножения:

выражение-приведения

выражение-типа-умножения * выражение-приведения

выражение-типа-умножения / выражение-приведения

выражение-типа-умножения % выражение-приведения

Операнды операций * (умножения) и / (деления) должны быть арифметического типа. Операнды операции % (деление по модулю,или остаток) должны быть интегрального типа. С операндами выполняются обычные арифметические преобразования (см. стр.41 оригинала).

Результатом выполнения операции (операнд1 * операнд2) является произведение двух операндов. Результатами операций (операнд1 / операнд2) и (операнд1 % операнд2) являются частное и остаток от деления, соответственно, где операнд1 делится на операнд2, при условии, что операнд2 не равен нулю. Использование операций / и % с нулевым делителем дает ошибку.

Если операнд1 и операнд2 имеют целочисленный тип, а частное не является целым, то результаты операции следующие:

1. Если операнд1 и операнд2 имеют одинаковый знак, то операнд1/ операнд2 есть наибольшее целое, меньшее чем истинное частное, а операнд1 % операнд2 имеет тот же знак, что и операнд1.

2. Если операнд1 и операнд2 имеют разные знаки, то операнд1/ операнд2 есть наименьшее целое, большее чем истинноечастное, а операнд1 % операнд2 имеет тот же знак, что и операнд1.

Округление всегда выполняется к нулю.

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

Существует две операции типа сложения: + и -. Синтаксис этих операций следующий:

выражение-типа-сложения:

выражение-типа-умножения

выражение-типа-сложения + выражение-типа-умножения

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

Операция сложения +

Допустимыми являются следующие типы операндов выражения операнд1 + операнд2:

1. Операнд1 и операнд2 оба арифметического типа.

2. Операнд1 интегрального типа, а операнд2 является указателем на объект.

3. Операнд2 интегрального типа, а операнд1 является указателем на объект.

В первом случае выполняются стандартные арифметические преобразования операндов, а результатом является их арифметическая сумма. В случаях 2 и 3 применяются правила арифметических действий с указателями. (Арифметические действия с указателями рассматриваются на стр.57 оригинала).

Операция вычитания -

Допустимыми являются следующие типы операндов выражения операнд1 - операнд2:

1. Операнд1 и операнд2 оба арифметического типа.

2. Оба операнда являются указателями на совместимые типы объектов. (Примечание: неквалифицированный тип type рассматривается как совместимый с квалифицированными типами const type, volatile type и const volatile type.)

3. Операнд2 интегрального типа, а операнд1 является указателем на объект.

В первом случае выполняются стандартные арифметические преобразования операндов, а результатом является их арифметическая разность. В случаях 2 и 3 применяются правила арифметических действий с указателями.

Операции поразрядного сдвига

Существует две операции поразрядного сдвига: <>. Синтаксис этих операций следующий:

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

выражение-типа-сложения

выражение-типа-сдвига << выражение типа сдвига

выражение-типа-сдвига >> выражение типа сдвига

Операция поразрядного сдвига влево <<

В выражении E1 << E2 операнды Е1 и Е2 должны иметь тип int. С Е1 и Е2 выполняются обычные целочисленные действия, а тип результата определяется операндом Е1. Если Е2 отрицателен, либо по числу разрядов больше или равен Е1, то операция неопределена.

Результатом операции E1 << E2 является значение E1, сдвинутое влево на Е2 разрядов и при необходимости заполненное справа нулями. Сдвиг влево unsigned long E1 эквивалентно умножению Е1 на 2 в степени Е2 и редуцированию по модулю ULONG_MAX+1; сдвиг влево unsigned int эквивалентно умножению на 2 в степени Е2 и редуцированию по модулю UINT_MAX+1. Если Е1 это signed int, то результат следует интерпретировать с осторожностью, поскольку знаковый бит изменился.

Константы ULONG_MAX и UINT_MAX определяются в .h-файле.

Операция поразрядного сдвига вправо >>

В выражении E1 >> E2 операнды Е1 и Е2 должны иметь тип int. С Е1 и Е2 выполняются обычные целочисленные действия, а тип результата определяется операндом Е1. Если Е2 отрицателен, либо по числу разрядов больше или равен Е1, то операция неопределена.

Результатом операции E1 >> E2 является значение E1, сдвинутое вправо на Е2 разрядов. Если Е1 имеет тип unsigned, то при необходимости происходит его заполнение нулями слева. Если же Е1 имеет тип signed, то заполнение слева выполняется знаком (0 для положительных и 1 для отрицательных значений). Такое расширение знакового бита гарантирует, что знак у Е1 >> E2 будет таким же, как и у E1. За исключением типов со знаком, значение E1 >> E2 представляет собой целую часть частного.

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

Существует четыре операции отношения: =. Синтаксис этих операций следующий:

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

выражение-типа-сдвига

выражение-отношения < выражение-типа-сдвига

выражение-отношения > выражение-типа-сдвига

выражение-отношения <=выражение-типа-сдвига

выражение-отношения >=выражение-типа-сдвига

Операция меньше чем <

Характеристики

Тип файла
Документ
Размер
2,71 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6513
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее