Главная » Просмотр файлов » Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)

Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033), страница 25

Файл №1004033 Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)) 25 страницаБьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033) страница 252018-10-07СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Если результат вычислений требуется преобразовать обратно в тип Ьоо1, то О преобразуется в)а(зе, а ненулевые значения — в «ие: ео!дя() ( Ьоо! а=вне! Ьоо! Ь=о ие; стоит в том, что на компьютере символы хранятся в виде набора байт, целые числа хранятся и обрабатываются как наборы машинных слов, числа с плавающей запятой располагаются в характерных для них объемах памяти (соответствующих специализированным регистрам процессора), и на все эти сущности можно ссылаться по адресам. Фундаментальные типы языка С++ вместе с указателями и массивами предоставляют программисту отражение этого машинного уровня в манере, относительно независимой от конкретной реализации. В большинстве приложений можно обойтись типом Ьоо1 для логики, типом сйае для символов, типом!и! для целых чисел и типом ИоиЫе — для дробных (чисел с плавающей запятой).

Остальные фундаментальные типы являются вариациями, предназначенными для оптимизации и решения специальных задач, и их лучше до поры игнорировать. Но, разумеется, их нужно знать для чтения существующего стороннего кода на С и С+ч-. 116 Глава 4 Типы и объявления Ьоо1 х=авЬ; Ьоо1у=а)Ьг й а+Ь равно 2, так что х становится оие о' а)Ь равно 1, ток что у становится (Рие Указатель можно неявно преобразовывать к типу Ьоо1 (8С.6.2.5). Ненулевой указатель преобразуется в ггие; указатель с нулевым значением — вуа1ве.

4.3. Символьные типы В переменной типа сйае может храниться код символа, соответствующий некоторой стандартной кодировке. Например: сяае сЬ='а'; Ннс1иде <1овгееат > 1п( та(п () сяае с; вЫ:: с(а»с; вгд:: сои1« "гяе ва1ие оГ ' " «с «" ' и "«1нг(с) « ' ~и '; Практически повсеместно под тип сйае отводится 8 бит ламяти, так что переменные этого типа могут хранить один из 256 символов. В типичном случае кодировка символов является одним из вариантов стандарта 180-646, например АБСН, что соответствует символам стандартной клавиатуры.

Много проблем проистекает из-за того, что набор этот стандартизован не полностью ЯС.З). Серьезные различия имеют место для кодировок, поддерживающих разные национальные языки, и даже для разных кодировок одного и того же языка. Здесь мы, однако, интересуемся лишь тем, как это влияет на язык С++. Сложная и интересная проблема создания программ, поддерживающих несколько национальных языков и/или кодировок, в целом выходит за рамки настоящей книги, хотя и упоминается в отдельных ее местах (820.2, 82!.7 и 8С.З.З).

Можно с уверенностью полагать, что любая кодировка содержит десятичные цифры, 26 букв английского алфавита и стандартные знаки пунктуации. Неправильно полагать, что каждая 8-битная кодировка содержит не более 127 символов (большинство национальных кодировок содержат 255 символов), что нет алфавитных символов, отличных от букв английского языка (многие Европейские языки содержат дополнительные символы), что алфавитные символы имеют смежные коды (кодировка ЕВСР1С оставляет зазор между символами 'г' и 'у'), или что в обязательном порядке присутствуют все символы, необходимые для записи конструкций языка С++ (в некоторых национальных кодировках отсутствуют символы ( ) () ~ ),; см.

8С.З.!). Лучше вообще избегать привязки к конкретным представлениям объектов. Это касается и символов. Каждому символу сопоставляется целочисленное значение. Например, символу 'Ь' в рамках кодировки АГАСИ соответствует число 98. Вот программа, которая ответит на вопрос о числовом коде любого символа, который вы введете с клавиатуры: 117 4.3. Символьные типы Выражение гаг(с) дает целочисленное значение для символа с. В связи с преобразованием сйаг в (аг возникает вопрос: тип сйаг знаковый или беззнаковый? Ведь в зависимости от этого 256 восьмибитных значений могут трактоваться как числа от О до 255, или как числа от — 128 до +127.

К сожалению, точный ответ на вопрос зависит от конкретной реализации (вС.2, 8С.3.4). В языке С++ два типа дают точные ответы на указанный вопрос: тип цпгй8пей сйаг соответствует значениям от О до 255, а тип в(явей сйаг — значениям от — 128 до +127.

К счастью, различия касаются символов с кодами вне диапазона от О до 127, в который попадают все общеупотребительные символы. Если тип сйаг используется для хранения значений вне диапазона Π— 127, то возможны проблемы с переносимостью. Ознакомьтесь с разделом 8С.3.4, если у вас в программе используются сразу несколько символьных типов или если вы храните целые значения в типе сйаг. Тип исааг г специально предназначен для хранения более широкого диапазона кодов, характерных, например, для кодировки оп!соде. Размер этого типа данных зависит от реализации и всегда достаточен для хранения самого широкого символьного набора„поддерживающего ту или иную национальную специфику (см.

82!.7 и 8С.З.З). Странное имя этого типа досталось от языка С. В языке С этот тип не является встроенным, а определяется с помощью оператора турейеу'(84.9.7). Суффикс г специально применяется с целью четкого указания на то, что тил определен с но- мощью ГурейеУ. Подчеркнем, что символьные типы являются интегральными (84.1.!), так что к ним можно применять арифметические и побитовые логические операции (86.2). 4.3.1.

Символьные литералы Символьным литералом (символьной константой; снагасгег )вега! или снагасгег солвголг) называется символ, заключенный в аностроФы (одиночные кавычки), например, 'а' или '0'. Типом символьного литерала является айаг. Символьные литералы на самом деле есть просто символьные константы, именующие целочисленные значения из текущих кодировок символов, используемых на компьютере. Например, если программа исполняется на компьютере с АБСП-кодировкой, то ' О' есть 48.

Применение символьных литералов вместо десятичных обозначений делает программы более переносимыми. Ряд символьных литералов в своей записи используют специальный символ ~ (ЬасЫазЬ вЂ” обратная косая черта или езсаре-символ) и имеют стандартные названия, например, '~а' это символ перевода строки, а 'т,г — символ табуляции.

Более подробно такие символьные литералы рассматриваются в 8С.3.2. Символьные литералы для расширенных наборов символов имеют внд А'ао', где количество символов между апострофами и их смысл зависят от конкретных реализаций, чтобы соответствовать типу маваг г. Естественно, что такие литералы имеют тип маваг г. Глава 4. Типы и объявления 118 4.4. Целые типы Как и тип сйаг, кахсдый целый тнп представим в трех формах: «просто» !пг, в!8пе»! шг и ипяйпег! ш!. Кроме того, целые могут быть трех размеров: вйог! шг, «просто» ш! и !опй ш!.

Вместо !оп8 !и! можно просто писать !опй. Аналогично, вйогг есгь синоним для вйогг шг, ипв!8пег! — для ипв!Опед !пг, а в!йпе»Г — для в!8пег! !пб Беззнаковые (ипз!8пед) целые типы идеальны для трактовки блоков памяти как битовых массивов. Использование иипйпед вместо !пг с целью заполучить лишний бит для представления целых положительных значений почти всегда является неудачным решением. А попытки гарантировать положительность числовых значений объявлением целой переменной с модификатором ипв!8пе»! опровергаются правилами неявных преобразований типов (8С.6.1, ЭС.6.2.!). В отличие от типа «просто» айаг, типы «просто» ш! всегда знаковые (в!8пед). Явное применение модификатора в!Опед лишь подчеркивает этот факт.

4.4.1. Целые литералы Целые литералы представимы в четырех внешних обликах: десятичном, восынеричном, шестнадцатеричном и символьном (ВА.З). Чаше всего используются десятичные литералы, которые выглядят вполне ожидаемым образом 0 1234 976 12345678901234567890 Компилятор обязан выдавать предупреждение, если величина литерала выходит за допустимые границы. Литерал, начинающийся с Ох, является шестнадцатеричным (по основанию 16) литералом. Если же литерал начинается с нуля, но символ х за ним не следует, то это восьмеричный (по основанию 8) литерал. например: вес!та! (десятичный): 2 63 83 ос!а! 1восьмеричный) ." 0 02 077 0123 йехайес!та! (шестнадцатеричный): ОхО Ох2 Ох31 Ох53 Буквы а, Ь, с, д, е и !'(или их эквиваленты в верхнем регистре) используются для обозначения чисел 10, 11, 12, 13, 14и 15, соответственно.

Восьмеричные и шестнадцатеричные литералы используются преимущественно для представления битовых последовательностей. Использование таких литералов для обозначения обычных чисел чревато сюрпризами. Например, на аппаратных платформах, у которых тип )пг реализуется 16-битным словом (с представлением отрицательных целых в дополнительном коде), Ох3132"есть отрицательное десятичное число — 1, а на платформах с большим числом бит — это уже 65535. Суффикс с!явным образом обозначает беззнаковое (ипз(8пес!) целое, а суффикс Б — длинное (!оп8) целое. Например, типом литерала 3 является шг, типом 3!1 — ипвуйпег! т'г, а типом литерала ЗХ вЂ” тип !оп8 шв Если суффикс отсутствует, компилятор самостоятельно приписывает литералу подходящий тип, который он выбирает, сопоставляя значение литерала и машинозависимые размеры целых типов (8С.4).

Целесообразно ограничить использование неочевидных констант хорошо прокомментированными объявлениями с ключевым словом сопи (85.4) или инициализаторами перечислений (84.8). 4.5. Типы с плавающей запятой 4.5. Типы с плавающей запятой Типы с плавающей запятой соответствуют числам с плавающей запятой. Как и целые типы, они могут быть трех размеров: 31оаг (одинарная точность), йоиЫе (двойная точность) и 1оля йоиЫе (расщиренная точность). Точный смысл каждого типа зависит от реализации. Выбор оптимальной точности в конкретных задачах требует изрядных знаний в области вычислений с плавающей запятой. Если у вас их нет, то проконсультируйтесь со специалистом, или основательно изучите предмет, или используйте тип ИояЫе наудачу.

4.5.1. Литералы с плавающей запятой по умолчанию лилтералы с плавающей запятой (1)оотг-ройлт 11гега1) имеют тип йоиЫе. Опять-таки, компилятор обязан выдавать предупреждения в случаях, когда значение литерала не соответствует машинным размерам для типов с плавающей запятой. Приведем примеры литералов с плавающей запятой: 1.23 .23 0.23 1. 1.0 1.2е10 1.23е-15 Пробельные символы в составе обозначений литералов с плавающей запятой ве допускаются. Например, 65.43 е-21 не является литералом, а скорее это набор из четырех отдельных лексем (вызывающих ошибку компиляции): 65.43 е — 21 Если вам нужен литерал с плавающей запятой, имеющий тип 31оаг, следует использовать суффиксы 3'или Г: 3.141592651' 2.01' Д997925Г 2.9е-33' Для придания литералу типа (опя доиЫе следует использовать суффиксы 1 или Х: 3.141592651. 2.01 2.997925Е 2.9е-ЗА 4.6. Размеры Некоторые аспекты фундаментальных типов языка С++, например, размер типа (пг, зависят от конкретных реализаций (ЗС.2).

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

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

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

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