Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C++

Г. Шилдт - Полный справочник по C++ (1109478), страница 14

Файл №1109478 Г. Шилдт - Полный справочник по C++ (Г. Шилдт - Полный справочник по C++) 14 страницаГ. Шилдт - Полный справочник по C++ (1109478) страница 142019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Сам указатель представляет собой переменную, в которой хранится адрес объекта базового типа. Таким образом, указатель на символьную переменную (как и любои другой указатель) должен иметь достаточный размер, чтобы хранить любой алрес в соответствии с архитектурои компьютера. Однако, как правило, указатели ссылаются только на объекты своею базового типа. В одном объявлении можно смешивать и указатели, и обычные переменные. Например, оператор $ Епс х, у, соцпсг объявляет пелочисленные переменные н и соиас вместе с указателем у, ссылающимся на целочисленные переменные.

В следующей программе операторы * и а используются лля записи значения 10 в переменную еахяве. В результате на экран выводится число 1О. Вьпс1ис)е <ясно.)г> Гпх ааьп(чоЫ) Епс сахвес, аоцхсе; Епс *аи воохсе = 10) и = авоихсег сахоес = *гсг рхвпсЕ("Ъс)", сатдес); хесихп 0; ) Статический оператор амеб Статический унарный оператор вЕаеоЕ вычисляет длину операнда в бантах. Операндом может быть как отдельная переменная, так и имя типа, заключенное в скобки. Предположим, что размер типа епе равен 4 байт, а типа гтоо)з1е — 8 байт. В этом случае следующий фрагмент програмл)ы выведет на экран числа В 4. г г оси)з1е Ег рхвпсб("Ъст ", аваеоЕ Е); рхъисг("во ", эваеог(ъпх))г Следует помнить, что для вычисления размера типа его имя должно быть заключено в скобки.

Имя переменной в скобки заключать не обязательно, хотя и вреда от этого не будет. С помощью оператора переопределения типа суреаее в языке С/С++ выделен специальный тип ваке е, отдаленно напоминающий целое число без знака. С формальной точки зрения результат оператора взявоЕ имеет тип ваке с, но на практике его можно считать целым числом без знака. Оператор вЕяеоЕ позволяет создавать мащинонезависимые программы, в которых автоматически учитываются размеры встроенных типов.

В качестве примера рассмотрим базу данных, кюкаая запись которой состоит из шести целых чисел. Если такую базу необходимо реализовать на разных компьютерах, нельзя надеяться, что размер целочис- лепного типа всзлс булат одинаков. Фактичсскую дли) )у типа следует определить с )кжю- шью оператора айаеой. Таким образом, пропжмма должна имсз.ь примсрно такои вил. /" 3 гюль б целых чисел в Файл. */ чсйй рцс сес(йлй тес(б], утьд *йр) ( 1пс 1еп; 1ел = йит1Се(тес, вйзеой(йлй)*б, 1, йр); йй(1ел )=.

1) рлзпйй("Ожибка лри залили"); Функция рис тес() правильно компилирустся и выполняется в любой срсдс, в том числе на ! 6- и 32-разрядных компьютсрах. В заключение отметим, что опсратор вйаеой выполнястся ца этапс компиляции, и сто результат в программе рассматривается как константа. Оператор последовательного вычисления Оператор послсдоватсльного вычислсния (орега)ог сопцла) связывает в одно цслос несколько выражсций. Символом этого оператора являстся запя гав.

Подразумсвается, что левая часть оператора послсдоватсльного вычисления всегда имеет тип згейа. Это означает, что значснис выражения, стоящего в его правои части, становится зпачснисм всего выражения, разделенного запятыми. Например, оператор В к = (у=з, уъ1); сначала присваиваст псремснной у значение 3, а затсм присваиваст псрсмснной х значсцис 4. Скобки здссь необходимы, поскольку приоритет опсраторв послсдовательного вычислсния меньше, чсм приоритет оператора присваивания.

По сушсству, выполнение оператора послсдоватсльного вычислсния сводится к выполнению нескольких операторов подряд. Если этот оператор стоит в правой части опсратора присваивания, то его результатом всегда будет результат выражения, стояшсго послсдним в списке. Опсратор последовательного вычисления можно сравнить с союзом "и" в выражении "сделай это и это и это". Оператор доступа к члену структуры и ссылки на член структуры В языке С символы "." и "->" обозначают операторы доступа к элемснтам структур и объсдинсний.

Сглрукглуры и обаедолелил являются составными типами данных (иногда их сщс называют агрегированными), в которых одно имя связываст насколько объектов. (см. главу 7). Оператор доступа к члену структуры (точка) используется для нспосрсдствснного обращения к элементу структуры или объсдинсния. Оператор ссылки на член структуры используется лля обращения к члсну структуры или объсдинения через указатель. Рассмотрим Фрагмент программы. аттцсй еслр1оуес снег лате(80!; йлс ас)ег й1оаг ваде; Етрс алгцсй елр1оуее 'р = аеслр; /* Записать адрес: структуры епр а указатель р */ Часть 1. Основы языка С++; подмножвагво С Для того чтобы присвоить члену иоде структуры епр значение )23.33„нужно выполнить следуюший оператор В е~пр сиада = 123.23( То же самое можно сделать, использовав указатель на структуру еир.

$ р->иоде = 133.33; Операторы "Ц" и "и" Круглые скобки — это оператор, повышаюший приоритет операций, заключенных внутри. Квалрап(ыс скобки используются лля индексации массива (массивы подробно обсуждаются в главе 4). Если в программе определен массив, то значение выражения, заключенного в квадратные скобки, равно индексу элемента массива. Рассмотрим лемонстрационную программу.

Мвпс1пйе <ве<)во.'и> снап в(90)( впс та(п(чоЫ) ( а(3) = 'х'у рс1псй("Ъс", в(3)); сеспсп О; ) Здесь символ 'к' сначала присваивается четвертому элементу массива (в языке С элементы всех массивов нумеруются, начиная с нуля), а затем выводится на экран. Приоритеты операторов Приоритеты всех операторов указаны в табл. 2,8. Обратите внимание на то, что все операторы, за исключением унарных и тернарного, выполняются слева направо.

Унарные операторы "*", "в" и "-" выполняются справа налево. таблица 2.В. Приоритеты операторов в языке С () и -> Высший ! - ++ — +- [«ш) * а евиеоя «» « » ( )) аз Высший + — = / и е.д. Низший Глава 2. Выражения Щффд)(ОБАД 6 языке С++ определены еи(е несколько дополнительных алератарав, катарые ))чд(вид)яяяН ~ЩЩЩ)Щ((Щ будут рвссмаспрены в части П. ~ 1 Выражения Выражения состоят из операторов, констант, функций и переменных.

В языке С/Сч ь выражением считается любая допустимая комбинация этих элементов. Поскольку большинство выражений в языке С/Сч ь напоминают алгебраические, часто их таковыми и считают. Однако при этол~ следует учитывать специфические особенности языков С и С++. Порядок вычислений Ни в языке С, ни в языке С++ порядок вычисления полвыражений, входящих в выражения, не определен. Компилятор может сам перестраивать выражения, стремясь к созданию оптимального объектного кола. Зто означает, что программист не должен полагаться на определенный порядок вычисления полвыражений. Скажем, при вычислении выражения $х = 11О + х2(); нет никаких гарантий, что функция е1() будет вызвана раньше функции лл(). Преобразование типов в выражениях Если в выражение входят константы и переменные разных типов, они преобразуются к одному типу. Компилятор преобразует все операнлы в тип "наибольшего" операнда.

Зтот процесс называется расширением тилак ((уре ргопюйоп). Во-первых, все переменные типов снят и еноте 1пе автоматически преобразу1стся в тип 1пс. Этот процесс называется иелачисленным расширением ((п(еяга! ргогпойоп). Во-вторых, все преобразования выполняются одно за другим, слелуя приведенному ниже алгоритму. ЕСЛИ операнд имеет тин 1опд доиЬ1е, ТО второй операнд преобразуется в тнп 1опд донЬ1в ИНАЧЕ, ЕСЛИ операнд имеет тип донЬ1е, ТО второй операнд преобразуется в тип долхЬ1в ИНАЧЕ, ЕСЛИ операнд имеет тнп х1овс, ТО второй операнд преобразуется в тип Л1овс ИНАЧЕ, ЕСЛИ операнд имеет тип нпв1дпвд 1опд, ТО второй операнд преобразуется в тип ппв1дпвд 1опд ИНРЛЕ, ЕСЛИ операнд имеет тип 1опд, ТО второй операнд преобразуется в тип 1опд Инлчл, ЕСЛН операнд имеет тип ппв1опвд лпе, ТО второй операнд преобразуется в тип ппв1дпед лпе Кроме того, есть одно правило: если один из операторов имеет тип 1опд, а второй — нпв1дпед Епс, н значение переменной типа нпв1дпвд 1пс невозможно прел- ставить с помощью типа 1опд, то оба операнда преобразуются в тип ппв1дпвд 1опд.

После выполнения преобразований тип обоих операнлов одинаков и совпалает с типом резуль~ата выраженил. Рассмотрим пример преобразования типов. Прелполагается, что переменная хевизе описана в другом месте программы. — Прим. рвд. Часть !. Основы языка С++: подмножество С б+ 1 ) донЬ1е йоп)з1е Здесь символ с)з сначала преобразуется в целое число.

Затем результат операции о)з/1 преобразуется в тип доо)з1е, поскольку именно этот тип имеет результат выражсиня аьи. ПОСЛЕ ЭТОГО рЕЗуЛЬтат ОПЕрацИИ а+а ПрЕОбраЗуЕтСя В тнл ПЕрЕМЕННОй й, т.е. в тип Я1оас. Окончательный результат имеет тип дочхз1е, Приведение типов Используя приведение типов (саз(), можно принудительно задать тип выражения. Привеление типов имеет следуюший вид. (тии) выражение Здесь тип — это любой допустимый тип ланных. Например, в приведенном ниже фрагменте программы результат вырюкения х/2 приводится к типу а1оас.

$ (т1оас) к/2 С формальной точки зрения приведение типов является унарным оператором, и его приоритет совпадает с приоритетами всех других унарных операторов. Несмотря на то что приведение типов не слишком широко попользуется в программировании, иногда этот оператор оказывается очень полезным. Предположим, что нам необходимо использовать целочисленную переменную в качестве счетчика цикла, а в вычислениях необходимо учитывать дробные части. В этом случае приведение типов позволит нам сохранить точность вычислений. Вупс1пде <вед1о.)з> 1пс иа1п(чоЫ) /* выводит на печать число 1 и 1/2 с учетом дробной части */ ( апс 1; Хот(1=1з 1к=100з ++1) ртйпсй('Ьд / 2 =: ьгруп", 1, (б1оас) 1 /2)г тесшп Оз Без оператора привеления типа (тьоас) деление было бы целочисленным и дробная часть была бы потеряна.

й языке С++ првдусмогпрвны ви(в несколько опврвгпоров приведения типов. в чвипности поппе авве и вевеза авве. Они обсуждаются в часто //. Глава 2. Выражения с)зат сун з.пс з.; Г1оас д; донЬ1е д; гевн1с= ( с)з / 1 ) 1 1 апг 1 1 ! 1пс + ( Г*д) — ( 1 1 дон)з1е 1 1 1 1 д1оас 1 1 1 Г1оас 1 1 1 Пробелы и круглые скобки Пробелы и символы табуляции облегчают чтение нрограмм. Например, два следу1ощих оператора совершенно одинаковы х=10/у-(127Гх): х = 10 Г у -П27Гх); Лишние скобки не ~риводят к ошибкам и не замела(иот выиолнение программ. Однако оци позволяют прояснить точный порядок вычислений.

Как вы полагаете, какой из операторов легче понять? х .= уГЗ-За*гетр+127; х = (уГЗ) — (34*сетпр] + 127; Составные операторы присваивания В языке С/С++ существуют составные формы оператора присваивания, представляющие собой комбинации оператора присваивания и арифметических оиераторов. Например, оператор й х = хз10; можно переписать в анас Фх += 10; Оператор "+=" сообщает компилятору, что к старому значени(о переменной х следует прибавить число ! О. Оператор присваивания образует составные формы практически со всеми бинарными операторами. Итак, выражение вида переменная =- переменная оператор выражение можно переписать следующим образом: переменная оператор= выражение Например, выражение 6 х = х-100; можно переписать как $ х -= 100; Составные формы присваивания широко используются в профессиональных программах на языке С/С++.

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

Тип файла
DJVU-файл
Размер
7,03 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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