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

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

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

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

Но текущую помощь программистам в этом вопросе при использовании ограниченных символьных наборов предоставляют ключевые слова, диграфы (йугар/и) и триграфы: Приложение С. Технические подробности 96Я Программы с ключевыми словами и диграфами читаются лучше программ, использующих триграфы. Однако если символы, такие как 1, недостижимы, то применение триграфов обязательно, дабы не потерять символы в строках и символьных константах. Например, '1' превращается в 'тз<'. Некоторые люди вместо традиционных значков операций предпочитают использовать ключевые слова, например алН. С.З.2. Евсаре-символы Небольшое количество символов имеют имена, включающие обратную косую черту в качестве езсаре-символа: С++ АБСП звание ЫЬ (ЬЕ) М(пе (перевод строки) пкопга1 гаЬ (горпзон-я табуляция) гйса1 шЬ (вертик-я табуляция) 'и НТ ЧТ ВБ 1сзрасе (забой) хь СК (аяе гештп (возврат каретки) Хг Гопп Ген (перевод страницы) ВЕЬ а1егг (звонок) ха Ьаскз)азЬ (обратная косая черта) опезг(оп тпагй (звак вопроса) гйпд1е дпоте (апостроф) хз оопЫе г)поте (двойная кавычка) (ооо осга1 пшпЬег (восьмерич.

число) ооо (х(йл ... л)й Ьех пшпЬег (шествадцатер. число) Это позволяет представить любой символ из машинного символьного набора и, в частности, вставить такие символы в символьные строки (см. 95.2.2). Применение Несмотря на свой внешний вид, это одиночные символы. Символ можно представить в виде одной, двух или трех восьмеричных цифр (с предшествующим ~) или шестнадцатеричным числом (с предшествующим ~х). На число шестнадцатеричных цифр в такой последовательности ограничений нет. Последовательность восьмеричных или шестнадцатеричных цифр обрывается на первом отличном от них символе. Например: С.З. Символьные наборы 965 любых цифровых нотаций для символов делает программу непереносимой между машинами с разными символьными наборами.

Допускается записывать символьный литерал с применением нескольких символов, например ' аЬ', но это считается архаичным, зависящим от реализации, так что этого лучше избегать. Когда числовая константа в восьмеричной нотации внедряется в строку, целесообразно использовать для ее записи именно три цифры, иначе чтение такой строки вызывает затруднение (требуется следить за тем, цифра или нет стоит после числовой константы). Для шестнадцатеричных констант используйте две цифры. Например: сйаг е1 [] = "а~хай',129" г //б сйаг: 'а' ']ха' й' 512' '9' ']О' сйаг е2]] = "а'~хай'~227"; /5 сйаг: 'а ']ха' 'й' ']!27' ']О' сйаг е5] ] = "а'~ха4~127"; //4 сйаг: 'а' ']ха4' ']127 ']О' сйаг е4] ] = "а'асхад',0127"; /5 сйаг: 'а' ']хаЫ' 5012' '7' ']О' С.ЗЗ.

Расширенные символьные наборы Программа на С++ может писаться и представляться пользователю в рамках символьных наборов, более широких, чем набор из ]27 символов АБСП. Там, где реализация поддерживает расширенные наборы символов, идентификаторы, комментарии, символьные константы и строки могут содержать символы вроде а, ]5 и т.д. Для переносимости реализация должна также отображать эти символы в кодировку, содержащую лишь доступные для всех пользователей С++ символы. Так как такой перевод символов происходит до начала компиляции, то он не влияет на семантику программы.

Стандартное кодирование символов из расширенного набора символами менее широкого набора, поддерживаемое в С++, представляется последовательностью четырех нли восьми шестнадцатеричных цифр: ипгеегеа1-сйагас!ег-пате: ~ц ХХХХХХХХ ~с ХХХХ Здесь Хсоответствует одной шестнадцатеричной цифре. Например, ~и1е2Ь. Более короткое обозначение ~иХХХХравносильно ~ УООООХХХХ. Количество шестнадцатеричных цифр, не равное четырем или восьми, является лексической ошибкой. Программист может непосредственно использовать такое кодирование, однако в первую очерель оно предназначено для реализации, чтобы последняя использовала ее для представления видимого пользователю расширенного набора более узким внутренним набором символов.

Если вы полагаетесь на специальные среды для представления идентификаторов символами расширенного набора, то вы, тем самым, снижаете переносимость программы. Такую программу труднее читать и понимать, если нет понимания использованного для идентификаторов и комментариев естественного языка. Следовательно, чтобы программа могла восприниматься программистами разных стран, лучше ограничиться английским и символами АБСП, Приложение С. Технические подробности 966 С.З.4. Знаковые и беззнаковые символы В зависимости от реализации тип сйаг может быть знаковым или беззнаковым.

Это открывает дверь для неприятных сюрпризов. Например: сйаг с = 255! //255 - "все единицы, шестнадцатеричное ОХРУ (п! з' = с ! го(а г(айаг с, з!апегт сйаг зс, ипз(кпе!! сваг ис) < сйаг* рс = йис! // еггог: нет преобразования указателей з(апет! сйаг* рзс = рс! //еггог: нет преобразования указателей ииз(кпе!! сйаг* рис = рс! //еггот нет преобразования указателей рзс = рис! // еггог: нет преобразования указателей ) В то же время переменные этих типов можно свободно присваивать друг другу. Однако присваивание слишком больших значений переменной з<дпеИ айаг (ВС.6.2.1) по-прежнему не определено.

Например: гоЫ1'(айаг с, ( с = 255! з(диез( айаг зс, ипз(апет( сйаг ис ) // зависит от реализации // о(с // зависит от реализации // зависит от реализации // ой преобразование к ипз!епег! //зависит от реализации // ой: преобразование к ипз!апет! с = зс; с =ис! зс = ис! ис = зс! зс= с! ис = с; ) Ни одна из этих потенциальных проблем не возникает, если использовать просто сйаг. Каково будет значение 1? К сожалению, ответ не определен.

Во всех известных мне реализациях он зависит от смысла преобразования к типу зп! «всех единиц» в айаг. На платформе БО! Ота!!епяе тип сйаг беззнаковый, так что ответ будет 255. На аппаратных платформах Бцп БРАКС или !ВМ РС тип айаг знаковый и ответ равен -1. В последнем случае компилятор может предупредить о преобразовании литерала 255 в значение -1 для типа сйаг. Однако С++ не имеет общего механизма для выявления подобного рода проблем.

Чтобы избежать этой проблемы, можно вместо с))аг указывать точно ипяйпеИ айаг или з!йззеИ айаг. К сожалению, некоторые библиотечные функции, такие как ягстр (), принимают только тип сйаг (920.4.1). Тип сйаг должен вести себя идентично з!япев( сйаг или ипзз)(пег! айаг. Тем не менее, все три типа считаются различными, так что нельзя смешивать указатели на разные сйаг: 967 С4. Типы целых литералов С.4.

Типы целых литералов В общем случае, тип целого литерала зависит от его формы, значения и суффикса: ° Если литерал десятичный и не имеет суффикса, то он относится к первому из следующих типов, достаточных для представления его значения: глб 1ал8 !лг, ила!Оле0!аля 1лГ. ° Если литерал восьмеричный и не имеет суффикса, то он относится к первому из следующих типов, достаточных для представления его значения; 1лг, влв18лей !лГ, 1аля тт, ива!Овей 1ал8 1ла ° Если литерал имеет суффикс я или !1, то его тип — первый из следующих двух типов, достаточных для представления его значения: япв10лей шг, ипийлег! 1але 1лг.

° Если литерал имеет суффикс !или Х, то его тип — первый из следующих двух типов, достаточных для представления его значения: 1алй.!лг, иввйргег1!алй ша ° Если литерал имеет суффикс и1,!и, иХ, Хи, И, Ш, Ш. или Х1! то его тип— илв18леа!аля!па Например, число 100000 имеет тип !пг на машине с 32-битовыми глг, но тип!аля !в!на машине с 16-битовыми !пг и 32-битовыми 1аля. Аналогично, ОХАООО относится к типу !лена машине с 32-битовыми 1лг, но к типу вяз1яле0 !лена машине с 16-битовыми 1лг. Таких зависимостей от реализации можно избежать, если явно использовать суффиксы: 1ОООООХ всегда (на всех машинах) имеет тип 1аля глг, а ОХ4000!!в тип ила!Оле0 !лг (на всех машинах). С.5.

Константные выражения Язык С++ требует канстантньи выражений (сапвгалг ехргевв!алв) для определения границ массивов (95.2), меток оператора сазе (96.3.2) и инициализаторов перечислений (84.8). Вычисление константного выражения приводит к интегральной константе или константе перечисления. Такие выражения состоят из литералов (94.3.1, $4.4.1, 84.5.1), элементов перечислений (94.8) и констант, инициализируемых константными выражениями. В шаблонах также можно использовать целый параметр шаблона (9С.13.3).

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

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

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

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