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

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

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

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

Так, запись{ выражениенео6 }обозначает выражение, заключенное в фигурные скобки, которое в общем случае может отсутствовать.Полный перечень синтаксических конструкций приведен в А13.В отличие от грамматики, данной в первом издании этой книги, приведенная здесь грамматикастаршинство и порядок выполнения операций в выражениях описывает явно.А 4. Что обозначают идентификаторыИдентификаторы, или имена, ссылаются на разные объекты13: функции; теги структур, объединений иперечислений; элементы структур или объединений; typedef-имена; метки и объекты.

Объектом(называемым иногда переменной) является часть памяти, интерпретация которой зависит от двух главныххарактеристик: класса памяти и ее типа. Класс памяти сообщает о времени жизни памяти, связанной сидентифицируемым объектом; тип определяет, какого рода значения находятся в объекте. С любым именемассоциируются своя область видимости (т. е. тот участок программы, где это имя известно) и атрибут связи,определяющий, обозначает ли это имя в другом файле тот же самый объект или функцию. Область видимостии атрибут связи обсуждаются в А11.А 4.1.

Класс памятиСуществуют два класса памяти: автоматический и статический. Несколько ключевых слов в совокупности сконтекстом объявлений объектов специфицируют класс памяти для этих объектов.Автоматические объекты локальны в блоке (А9.3), при выходе из него они "исчезают". Объявление, заданноевнутри блока, если в нем отсутствует спецификация класса памяти или указан спецификатор auto, создаетавтоматический объект. Объект, помеченный в объявлении словом register, является автоматическим иразмещается по возможности в регистре машины.Статические объекты могут быть локальными в блоке или располагаться вне блоков, но в обоих случаях ихзначения сохраняются после выхода из блока (или функции) до повторного в него входа.

Внутри блока (в томчисле и в блоке, образующем тело функции) статические объекты в объявлениях помечаются словомstatic. Объекты, объявляемые вне всех блоков на одном уровне с определениями функций, всегдастатические. С помощью ключевого слова static их можно сделать локальными в пределах транслируемойединицы (в этом случае они получают атрибут внутренней связи), и они становятся глобальными для всейпрограммы, если опустить явное указание класса памяти или использовать ключевое слово extern (в этомслучае они получают атрибут внешней связи).А 4.2. Базовые типыСуществует несколько базовых типов.

Стандартный заголовочный файл <limits.h>, описанный вприложении В, определяет самое большое и самое малое значения для каждого типа в данной конкретнойреализации. В приложении В приведены минимально возможные величины.Размер объектов, объявляемых как символы, позволяет хранить любой символ из набора символов,принятого в машине. Если объект типа char действительно хранит символ из данного набора, то егозначением является код этого символа, т.

е. некоторое неотрицательное целое. Переменные типа char могутхранить и другие значения, но тогда диапазон их значений и особенно вопрос о том, знаковые эти значенияили беззнаковые, зависит от реализации.Беззнаковые символы, объявленные с помощью слов unsigned char, имеют ту же разрядность, что иобычные символы, но представляют неотрицательные значения; с помощью слов signed char можноявно объявить символы со знаком, которые занимают столько же места, как и обычные символы.Тип unsigned char не упоминался в первой редакции языка, но всеми использовался. Тип signedchar — новый.Помимо char среди целочисленных типов могут быть целые трех размеров: short int, int и long int.Обычные объекты типа int имеют естественный размер, принятый в архитектуре данной машины, другиеразмеры предназначены для специальных нужд. Более длинные целые по крайней мере покрывают всезначения более коротких целых, однако в некоторых реализациях обычные целые могут быть эквивалентны13В оригинале — things.

— Примеч. ред.коротким (short) или длинным (long) целым. Все типы int представляют значения со знаком, если неоговорено противное.Для беззнаковых целых в объявлениях используется ключевое слово unsigned. Такие целые подчиняютсяарифметике по модулю 2n, где n — число битов в представлении числа, и, следовательно, в арифметике сбеззнаковыми целыми никогда не бывает переполнения. Множество неотрицательных значений, которыемогут храниться в объектах со знаком, является подмножеством значений, которые могут храниться всоответствующих объектах без знака; знаковое и беззнаковое представления каждого такого значениясовпадают.Любые два из типов с плавающей точкой: с одинарной точностью (float), с двойной точностью (double) и сповышенной точностью (long double) могут быть синонимами, но каждый следующий тип этого спискадолжен по крайней мере обеспечивать точность предыдущего.long double — новый тип.

В первой редакции языка синонимом для double был long float,теперь последний изъят из обращения.Перечисления — единственные в своем роде типы, которым дается полный перечень значений; с каждымперечислением связывается множество именованных констант (А8.4). Перечисления ведут себя наподобиецелых, но компилятор обычно выдает предупреждающее сообщение, если объекту некоторогоперечислимого типа присваивается нечто, отличное от его константы, или выражение не из этогоперечисления.Поскольку объекты перечислений можно рассматривать как числа, перечисление относят карифметическому типу.

Типы char и int всех размеров, каждый из которых может быть со знаком или беззнака, а также перечисления называют целочисленными (integral) типами. Типы float, double и longdouble называются типами с плавающей точкой.Тип void специфицирует пустое множество значений. Он используется как "тип возвращаемого функциейзначения" в том случае, когда она не генерирует никакого результирующего значения.А 4.3. Производные типыПомимо базовых типов существует практически бесконечный класс производных типов, которыеформируются из уже существующих и описывают следующие конструкции:массивы объектов заданного типа;функции, возвращающие объекты заданного типа;указатели на объекты заданного типа;структуры, содержащие последовательность объектов, возможно, различных заданных типов;объединения, каждое из которых может содержать любой из нескольких объектов различныхзаданных типов.В общем случае приведенные методы конструирования объектов могут применяться рекурсивно.А 4.4.

Квалификаторы типовТип объекта может снабжаться квалификатором. Объявление объекта с квалификатором const указывает нато, что его значение далее не будет изменяться; объявляя объект как volatile (изменчивый, непостоянный(англ.)), мы указываем на его особые свойства для выполняемой компилятором оптимизации. Ни один изквалификаторов на диапазоны значений и арифметические свойства объектов не влияет. Квалификаторыобсуждаются в А8.2.А 5.

Объекты и LvaluesОбъект — это некоторая именованная область памяти; lvalue — это выражение, обозначающее объект.Очевидным примером lvalue является идентификатор с соответствующим типом и классом памяти.Существуют операции, порождающие lvalue. Например, если Е — выражение типа указатель, то *Е естьвыражение для lvalue, обозначающего объект, на который указывает Е. Термин "lvalue" произошел от записиприсваивания Е1 = Е2, в которой левый (left — левый (англ.), отсюда буква l, value — значение) операнд Е1должен быть выражением lvalue. Описывая каждый оператор, мы сообщаем, ожидает ли он lvalue в качествеоперандов и выдает ли lvalue в качестве результата.А 6.

ПреобразованияНекоторые операторы в зависимости от своих операндов могут вызывать преобразование их значений изодного типа в другой. В этом параграфе объясняется, что следует ожидать от таких преобразований. В А6.5формулируются правила, по которым выполняются преобразования для большинства обычных операторов.При рассмотрении каждого отдельного оператора эти правила могут уточняться.А 6.1.

Целочисленное повышениеОбъект типа перечисление, символ, короткое целое, целое в битовом поле — все они со знаком или без могутиспользоваться в выражении там, где возможно применение целого. Если тип int позволяет "охватить" всезначения исходного типа операнда, то операнд приводится к int, в противном случае он приводится кunsigned int. Эта процедура называется целочисленным повышением14.А 6.2. Целочисленные преобразованияЛюбое целое приводится к некоторому заданному беззнаковому типу путем поиска конгруэнтного (т. е.имеющего то же двоичное представление) наименьшего неотрицательного значения и получения остатка отделения его на nmax + 1, где nmax — наибольшее число в этом беззнаковом типе.

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

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

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

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

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