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

Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791), страница 207

Файл №1160791 Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004) 207 страницаБ. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791) страница 2072019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Подобные обозначения достаточно трудно читать, не задумываясь, цифра стоит после константы или не цифра. Для перевод строки горизонтальная табуляция вертикальнаятабуляция забой возврат каретки перевод страницы гулок обратная косая черта знак вопроса апостроф двойная кавычка восьмеричное число шестнадцатеричное число ХТ. ((.г) НТ ЧТ В5 СК гг ВЕ1 ~п ~ч ~Ь ~г ~а '2 ~ооо ~хЬЬЬ... 907 В.З.

Символьные наборы шестнадцатеричных констант пользуйтесь двумя цифрами. Рассмотрим следующие примеры: О б сииволов: 'а' "~,ха' 'и' '~12' '9' '~0' // 5 символов: 'а' '~ха' ЧГ '~127' "~0' //4 символа: 'а' '~хад' '~127' '~0' // 5 символов; 'а' '~ хид' '~012' '7' '~0' с1ьа с о1 [] = "а~ход~129; сваг о2~] .= "а~хай~12 T; суаг оЗЦ = "а~хаЮ,127"; сааг о4Д = "а~ха~Г~0127'; В.З.З. Большие символьные наборы Программа на С++ может быть написана и представлена пользователю в символьных наборах, гораздо более богатых, чем 127-символьный набор АБСП.

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

В принципе, этот перевод в основной набор символов для С++ (использующийся в данной книге) происходит до того, как компилятор производит какую-либо другую обработку. Поэтому отображение не влияет на смысл программы. Стандартное кодирование символов из болыпого набора менее широким, непосредственно поддерживаемым С++, представляется последовательностью из четырех или восьми шестнадцатеричных цифр: универсальное-имн-символа: ~0ХХХХХХХХ ХХХХХ В.З.4. Знаковые и беззнаковые символы Имеет просто сйаг знак, или не имеет, — это зависит от реализации.

Таким образом открывается возможность для неприятных сюрпризов и зависимости от реализации. Например: сйагс=255, //255 — свсвединициж сиесшнадяитеринноеухсс ии1= с; Каково будет значение 1? К сожалению, ответ не определен. Во всех известных мне реализациях он зависит от смысла лвсех единиц ь в битовом наборе сйаг при расши- Здесь Х представляет шестнадцатеричную цифру. Например, ~и1е2Ь. Более короткое обозначение ХХХХХ равносильно ~бсООООХХХХ.

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

Поатому для программ, использующихся в разных странах, обычно лучше придерживаться английского языка и АЯСП. Приложение В. Технические подробности 908 //ошибка: указатель не преобразуется // ошибка указаьпель не преобраэуепгся // ошибка: указатель не преобразуется // ошибка: указатель не преобразуется сЬаг" рс = йис; з!улей сЬаг' рзс = рс; ипз!дней сЬаг" рис = рс; рзс = рис; Переменные трех типов сЬаг можно свободно присваивать одну другой.

Однако присваивание слишком большого значения переменной в!спейс сйаг Я В.6.2.1) по-прелснему нс определено. Например: оогй! 1сЬаг с, з суп ей сЬ аг зс, и из!упей сЬ аг ис1 //определяется реализацией, если просто сЬагимеет знак // и содержит 8 битов с=255; // правильно //определяется реализацией, если просто сяаг имеет знак, // а значение ис слишколч велико // определяется реализацией, если значение ис слишком велико // правильно: преобразование в ипя улей //определяется реализацией, если просто суагне имеет знака, //а значение с слишком велико // правильно: преобразование в ипяупей с-зс, с=ис, зс=ис, ис=зс; зс=с; ис=с, Ни одна из этих потенциальных проблем не возникнет, если вы везде будете пользо- ваться просто сйаг.

В.4. Типы целых литералов Как правило, тип целого литерала зависит от его формы, значения и суффикса: Если он десятичный и не имеет суффикса, то относится к первому из следуюшиих типов, который окажется достаточным для представления его значения: !и!, !опй !и1, ипз!5пес!!опп !и!. Если он восьмеричный и не имеет суффикса, то относится к первому из следующих типов, который окажется достаточным для представления его значения: !и1, ипз15пес! тб !опд !и1, ипв1дпес! !опй тб Если он имеет суффикс и или У, его тип — первый из двух, в котором можно представить его значение: ипщпес!1и! ипв!йпес!!опй<пб ренин в !пй На машине ЯС1 С)ча11епяе сйаг беззнаковый, так что ответ будет 255.

На Япп БРАКС или 1ВЫ РС, где сйаг имеет знак, ответ будет -!. В этом случае компилятор может предупредить о преобразовании литерала 255 в значение -!. Однако Сч-.ь не предлагает универсального механизма для выявления подобных проблем. Одно из решений — избегать простого сйаг и пользоваться только определенными (з!йпеач или ипз!дней) типами сЬаг. К несчастью, некоторые стандартные библиотечные функции, такие как з!гсгпр 0, принимают только просто сйаг Я 20А.1).

Тип сЬаг долскен вести себя одинаково по отношению к з!5пес1 сЬаг и ипз!дней сйаг. Однако все три типа сйиг различаются, поэтому указатели на разные сЬаг смешивать нельзя. Например: оо1й/1сЬаг с, з!улей сЬаг зс, ипз!улей сЬаг ис) 909 В.б, Неявное преобразование типов ° Если он имеет суффикс 1 или б, его тип — первый из двух, в котором можно представить его аначение: 1олд!л1, ила!дней !аль ш1. ° Если он имеет суффикс и1, 1и, иХ., 1и, И, И/, (Л.

или ЕК его тип — илзщлег! 1аля ш1. Например, на машине с 32-разрядными целыми !л1 число 100000 относится к типу !л1. но на машине с 16-разряднымн целыми и 32-разрядными 1ола (л1 оно относится к типу 1олд !л! Аналогично ОХАООО относится к типу илз1ялег1 ш1 на машинах с 32-разрядными целыми и к типу илз!длег(!л1на машинах с 16-разрядными целыми. Этих зависимостей от реализации можно избежать, используя суффиксы: !ОООООА относится к типу 1олй ш1 на всех машинах, а ОХ40001!на всех компьютерах относится к илз!длег1 ш1, В.5. Константные выражения В таких местах как границы массива (9 5.2), метки в инструкпии сазе (9 6.3.2) и ннициализаторы перечислений Я 4.8) С++ требует константныхвыражений.

Константное выражение вычисляется в интегральную константу или константу перечисления. Такое выражение составляется из литералов (9 4.3.1, 9 44,1, 9 4.5.1), элементов перечислений (9 4.8) и констант, инициализированных константными выражениями. В шаблоне также можно использовать целый параметр шаблона (9 В.13.3). Литералы с плавающей точкой (9 4.5.1) можно использовать, только если явно преобразовать их в интегральный тнп. Как операнды в операторе з!аеоД9 6.2) только функции, объекты классов, указатели и ссылки можно использовать. Интуитивно, константные выражения — это просто выражения, которые компилятор может вычислить до компоновки программы (9 9.1) н ее запуска.

В.6. Неявное преобразованиетипов Интегральные типы и типы с плаваюп!ей точкой (9 4.1.1) в присваиваниях и арифметических выражениях можно свободно смешивать. Когда возможно, значения преобразуются так, чтобы не потерять информации. К сожалению, преобразования, приводящие к потере значения, также могут осуществляться неявно. В этом разделе дано описание правил преобразования, перечислены проблемы, связанные с преобразованием, и приведены их решения.

В.6.1. Продвижения Неявные преобразования, сохраняющие значение, обычно называют продвижениями. Перед тем, как выполнить арифметическую операцию, используется интегральное продвижение — для того, чтобы создать переменные типа !л! пз переменных более «коротких» пелых типов. Отметим, что эти продвижения не продолжаются далее в !олд (если операнд не относится к типу твс!гаг 1 или не является перечислением, которое уже больше чем !л1). В этом отражается изначальная цель подобных продвижений в С: привести операнды к «естественным» размерам для арифметических операций.

Интегральные продвижения таковы: слаг, з!ялег1 с!гат, илз!Хлег1сйаг, зйог! !л! или илз!ХледзЬог1!л! преобразуются в !л1, если !л1 может представить все значения исходных типов; в противном случае они преобразуются в илиялег! ш1. 910 Приложение В. Технические подробности /ос//аг / Я 4.3) или типы псречислснпй Я 4.8) преобразуются в первый из следующих типов, который сможет представить все значения их базовых типов: /п1, ипв/япес//п1, /опд илп ипз/Пиес/!опй.

° Битовое поле Я В.8.1) преобразуется в /п1, если /п1 может представить все значения битового поля; в противном случае оно преобразуется в ипв/дпеЖп/, если ипз/ггпвс//п/может представить все значения битового поля. В противном случае никакого целочисленного продвижения не применяется. боо/ преобразуется в /п/;~а/вв становится О, 1гие становится 1, Продвижения используются как часть обычных арифметических преобразований Я В.6.3). В.6.2.

Преобразования Фундаме//тальные типы могут преобразовываться один в другой невероятно большим количеством способов, По-моему, дозволяется слишком много преобразовании. Например: оои/7/доиЫе /й санг с = с/; Д осгпороясно: число с плавающвй точнов двоиной 7г/ точности преооразувтся в с/саг При написании программы вы всегда должны стремиться избегать неопределенного поведения и преобразований, которые нсзаметно «выбрасывают» информацию.

Компилятор может предупредить о многих сомнительных преобразованиях — и к счастью, многие компиляторы действитсльно предупреждают. В.6.2.1. Интегральные преобразования Пелос (,т1) может преобразовываться в другой целый тип. Значение перечислимого типа (впигп) моясно преобразовать в пелый тип. Если конечный тип беззнаковый, результирующее значение будет просто состоять из стольких битов, сколько уместится в конечном типе (при необходимости старшие разряды отбрасываются). Точнее говоря, результат будет наименьшим беззнаковым целым, соответствующим остатку от деления исходного целого числа на 2 в степени и, где и — это число битов, применяемых для представления беззнакового типа.

Е!апример: ипв/япег/с//аг ис = 1023;,~ / двоичное 1/1/1/11/1: ис становип/ся двоич ныл О 111/1/ /1, тоесть 255 Когда конечный тип знаковый, значен/ле остается неизменным, есл// его можно пред- ставить этим Типом, в противном случае оно определяется в реализации. в/упед с/саг во = /023; О определяется в реализации Возможный результат — 127или -1 Я В.ЗА) Лог//ческий тип или значение персчислимого типа могут неявно преобразовываться в свой целочисленный эквивалент Я 4.2, 9 4.8).

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

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

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

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