Главная » Просмотр файлов » Керниган и Ритчи - Язык программирования Си

Керниган и Ритчи - Язык программирования Си (793773), страница 57

Файл №793773 Керниган и Ритчи - Язык программирования Си (Керниган и Ритчи - Язык программирования Си) 57 страницаКерниган и Ритчи - Язык программирования Си (793773) страница 572019-04-24СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Все идентификаторы, оставшиеся послемакрорасширения, заменяются на 0L. Наконец, предполагается, что любая целая константа всегда имеетсуффикс L, т. е. вся арифметика имеет дело с операндами только типа long или unsigned long.Константное выражение (А7.19) здесь используется с ограничениями: оно должно быть целочисленным, неможет содержать в себе перечислимых констант, преобразований типа и операторов sizeof.Управляющие строки#ifdef идентификатор#ifndef идентификаторэквивалентны соответственно строкам# if defined идентификатор# if ! defined идентификаторСтроки #еlif не было в первой версии языка, хотя она и использовалась в некоторыхпрепроцессорах. Оператор препроцессора defined — также новый.А 12.6.

Нумерация строкДля удобства работы с другими препроцессорами, генерирующими Си-программы, можно использовать однуиз следующих директив:# line константа "имя-файла"# line константаЭти директивы предписывают компилятору считать, что указанные десятичное целое и идентификаторявляются номером следующей строки и именем текущего файла соответственно. Если имя файла отсутствует,то ранее запомненное имя не изменяется. Расширения макровызовов в директиве #line выполняются доинтерпретации последней.А 12.7.

Генерация сообщения об ошибкеСтрока препроцессора вида# error последовательность-лексемнеобприказывает ему выдать диагностическое сообщение, включающее заданную последовательность лексем.А 12.8. ПрагмаУправляющая строка вида# pragma последователъностъ-лексемнеобпризывает препроцессор выполнить зависящие от реализации действия.

Неопознанная прагма игнорируется.А 12.9. Пустая директиваСтрока препроцессора вида#не вызывает никаких действий.А 12.10. Заранее определенные именаПрепроцессор "понимает" несколько заранее определенных идентификаторов; их он заменяет специальнойинформацией. Эти идентификаторы (и оператор препроцессора defined в том числе) нельзя повторнопереопределять, к ним нельзя также применять директиву #undef. Это следующие идентификаторы:LINEНомер текущей строки исходного текста, десятичная константа.FILEИмя компилируемого файла, строка.DATEДата компиляции в виде "Ммм дд гггг", строка.TIMEВремя компиляции в виде "чч: мм: ее", строка.STDCКонстанта 1.

Предполагается, что этот идентификатор определен как 1 только в тех реализациях,которые следуют стандарту.Строки #error и #pragma впервые введены ANSI-стандартом. Заранее определенные макросыпрепроцессора также до сих пор не описывались, хотя и использовались в некоторых реализациях.А 13. ГрамматикаНиже приведены грамматические правила, которые мы уже рассматривали в данном приложении. Ониимеют то же содержание, но даны в ином порядке.Здесь не приводятся определения следующих символов-терминов: целая-константа, символьнаяконстанта, константа-с-плавающей-точкой, идентификатор, строка и константа-перечисление.

Слова,набранные обычным латинским шрифтом (не курсивом), и знаки рассматриваются как символы-термины ииспользуются точно в том виде, как записаны. Данную грамматику можно механически трансформировать втекст, понятный системе автоматической генерации грамматического распознавателя. Для этого помимодобавления некоторых синтаксических пометок, предназначенных для указания альтернативных продукций,потребуется расшифровка конструкции со словами "один из" и дублирование каждой продукции,использующей символ с индексом необ., причем один вариант продукции должен быть написан с этимсимволом, а другой - без него.

С одним изменением, а именно — удалением процукции typedef-имя:идентификатор и объявлением typedef-имени символом-термином, данная грамматика будет понятнагенератору грамматического распознавателя YАСС. Ей присуще лишь одно противоречие, вызываемоенеоднозначностью конструкции if-else.единица-трансляции:внешнее-объявлениеединица-трансляции внешнее-объявлениевнешнее-объявление:определение-функцииобъявлениеопределение-функции:спецификаторы-объявлениянеоб объявительсписок-объявленийнеоб составная-инструщияобъявление:спецификаторы-объявления список-инициализаторов-объявителейнеобсписок-объявлений:объявлениесписок-объявлений объявлениеспецификаторы-объявления:спецификатор-класса-памяти спецификаторы-объявлениянеобспецификатор-типа спецификаторы-объявлениянеобквалификатор-типа спецификаторы-объявлениянеобспецификатор-класса-памяти: один изauto register static extern typedefспецификатор-типа: один изvoid char short int long float double signed unsignedспецификатор-структуры-или-объединенияспецификатор-перечисленияtypedef-имяквалификатор-типа: один изconst volatileспецификатор-структуры-или-объединения:структура-или-объединение идентификаторнеоб { список-объявленийструктуры }структура-или-объединение идентификаторструктура-или-объединение: одно изstruct unionсписок-объявлений-структуры:объявление-структурысписок-объявлений-структуры объявление-структурысписок-объявителей-инициализаторов:объявитель-инициализаторсписок-объявителей-инициализаторов , объявитель-инициализаторобъявитель-инициализатор:объявительобъявитель = инициализаторобъявление-структуры:список-спецификаторов-квалификаторов список-объявителей-структурысписок-спецификаторов-квалификаторов:спецификатор-типа список-спецификаторов-квалификаторовнеобквалификатор-типа список-спецификаторов-квалификаторовнеобсписок-структуры-объявителей:структуры-объявительсписок-структуры-объявителей , структуры-объявителъструктуры-объявитель:объявительобъявительнеоб : константное-выражениеспецификатор-перечисления:enum идентификаторнеоб { список-перечислителей }enuь идентификаторсписок-перечислителей:перечислительсписок-перечислителей перечислительперечислитель:идентификаторуказательнеоб собственно-объявительсобственно-объявитель:идентификатор( объявитель )собственно-объявитель [ константное-выражениенеоб ]собственно-объявитель ( список-типов-параметров )собственно-объявитель ( список-идентификаторовнеоб )указатель:* список-квалификаторов-типанеоб* список-квалификаторов-типанеоб указательсписок-квалификаторов-типа:квалификатор-типасписок-квалификаторов-типа квалификатор-типасписок-типов-параметров:список-параметровсписок-параметров , ...список-параметров:объявление-параметрасписок-параметров , объявление-параметраобъявление-параметра:спецификаторы-объявления объявительспецификаторы-объявления абстрактный-объявительнеобсписок-идентификаторов:идентификаторсписок-идентификаторов , идентификаторинициализатор:выражение-присваивания{ список-инициализаторов }{ список-инициализаторов , }список-инициализаторов:инициализаторсписок-инициализаторов , инициализаторимя-типа:список-спецификаторов-квалификаторов абстрактный-объявительнеобабстрактный-объявитель:указательуказательнеоб собственно-абстрактный-объявительсобственно-абстрактный-объявитель:( абстрактный-объявитель )собственно-абстрактный-обьявительнеоб [ константное-выражениенеоб ]собственно-аострактныи-объявительнеоб ( список-типов-параметровнеоб )typedef-имя:идентификаторинструкция:помеченная-инструкцияинструкция-выражениесоставная-инструкцияинструкция-выборациклическая-инструкцияинструкция-переходапомеченная-инструкция:идентификатор : инструкцияcase константное-выражение : инструкцияdefault : инструкцияинструкция-выражение:выражениенеоб ;составная-инструкция:{ список-объявленийнеоб список-инструкцийнеоб }список-инструкций:инструкциясписок-инструкций инструкцияинструкция-выбора:if ( выражение ) инструкцияif ( выражение ) инструкция else инструкцияswitch ( выражение ) инструкцияциклическая-инструкция:while ( выражение ) инструкцияdo инструкция while ( выражение )for ( выражениенеоб ; выражениенеоб ; выражениенеоб ) инструкцияинструкция-перехода:goto идентификатор ;continue ;break ;return выражениенеоб ;выражение:выражение-присваиваниявыражение , выражение-присваиваниявыражение-присваивания:условное-выражениеунарное-выражение оператор-присваивания выражение-присваиванияоператор-присваивания: один из*=/=%=+=-=<<=>>=&=^=|=условное-выражение:логическое-ИЛИ-выражениелогическое-ИЛИ-выражение ? выражение : условное-выражениеконстантное-выражение:условное-выражениелогическое-ИЛИ-выражение:логическое-И-выражениелогическое-ИЛИ-выражение || логическое-И-выражениелогическое-И-выражение:ИЛИ-выражениелогическое-И-выражение && ИЛИ-выражениеИЛИ-выражение:исключающее-ИЛИ-выражениеИЛИ-выражение | исключающее-ИЛИ-выражениеисключающее-ИЛИ-выражение:И-выражениеисключающее-ИЛИ-выражение ^ И-выражениеИ-выражение:выражение-равенстваИ-выражение & выражение-равенствавыражение-равенства:выражение-отношениявыражение-равенства == выражение-отношениявыражение-равенства != выражение-отношениявыражение-отношения:сдвиговое-выражениевыражение-отношениявыражение-отношениявыражение-отношениявыражение-отношения< сдвиговое-выражение> сдвиговое-выражение<= сдвиговое-выражение>= сдвиговое-выражениесдвиговое-выражение:аддитивное-выражениесдвиговое-выражение >> аддитивное-выражениесдвиговое-выражение << аддитивное-выражениеаддитивное-выражение:мультипликативное-выражениеаддитивное-выражение + мультипликативное-выражениеаддитивное-выражение - мультипликативное-выражениемультипликативное-выражение:выражение-приведенное-к-типумультипликативное-выражение * выражение-приведенное-к-типумультипликативное-выражение / выражение-приведенное-к-типумулътипликативное-выражение % выражение-приведенное-к-типувыражение-приведенное-к-типу:унарное-выражение( имя-типа ) выражение-приведенное-к-типуунарное-выражение:постфиксное-выражение++ унарное-выражение-- унарное-выражениеунарный-оператор выражение-приведенное-к-типуsizeof унарное-выражениеsizeof ( имя-типа )унарный-оператор: один из&*+постфиксное-выражение:первичное-выражениепостфиксное-выражениепостфиксное-выражениепостфиксное-выражениепостфиксное-выражениепостфиксное-выражениепостфиксное-выражение~![ выражение ]( список-аргументов-выраженийнеоб ).

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

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

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

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