Брайан Керниган - Язык программирования Си. Издание 3-е, исправленное

Здесь есть возможность читать онлайн «Брайан Керниган - Язык программирования Си. Издание 3-е, исправленное» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2001, ISBN: 2001, Издательство: Невский Диалект, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Язык программирования Си. Издание 3-е, исправленное: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык программирования Си. Издание 3-е, исправленное»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Книга широко известных авторов, разработчиков языка Си, переработанная и дополненная с учетом стандарта ANSI для языка Си, 2-е английское издание которой вышло в 1988 году, давно стала классикой для всех изучающих и/или использующих как Си, так и Си++. Русский перевод этой книги впервые был выпущен изд- вом "Финансы и статистика" в 1992 г. и с тех пор пользуется неизменным спросом читателей.
Для настоящего третьего русского издания перевод заново сверен с оригиналом, в него внесены некоторые поправки, учитывающие устоявшиеся за прошедшие годы изменения в терминологии, а так же учтены замечания, размещенные автором на странице http://cm.bell-labs.com/cm/cs/cbook/2ediffs.html.
Для программистов, преподавателей и студентов.
Издание подготовлено при участии издательства "Финансы и статистика"

Язык программирования Си. Издание 3-е, исправленное — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык программирования Си. Издание 3-е, исправленное», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

c ›= '0' && c ‹= '9'

можно заменить на isdigit(c)

Далее мы будем пользоваться функциями из ‹ctype.h›.

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

Гарантируется, что любой символ из стандартного набора печатаемых символов никогда не будет отрицательным числом, поэтому в выражениях такие символы всегда являются положительными операндами. Но произвольный восьмибитовый код в переменной типа charна одних машинах может быть отрицательным числом, а на других - положительным. Для совместимости переменные типа char, в которых хранятся несимвольные данные, следует специфицировать явно как signedили unsigned.

Отношения вроде i › j и логические выражения, перемежаемые операторами amp;&и ||, определяют выражение-условие, которое имеет значение 1, если оно истинно, и 0, если ложно. Так, присваивание

d = c ›= '0' && c ‹= '9'

установит d в значение 1, если c есть цифра, и 0 в противном случае. Однако функции, подобные isdigit, в качестве истины могут выдавать любое ненулевое значение. В местах проверок внутри if, while, for и пр. "истина" просто означает "не нуль".

Неявные арифметические преобразования, как правило, осуществляются естественным образом. В общем случае, когда оператор вроде + или * с двумя операндами (бинарный оператор) имеет разнотипные операнды, прежде чем операция начнет выполняться, "низший" тип повышается до "высшего". Результат будет иметь высший тип. В параграфе 6 приложения A правила преобразования сформулированы точно. Если же в выражении нет беззнаковых операндов, можно удовлетвориться следующим набором неформальных правил:

· Если какой-либо из операндов принадлежит типу long double, то и другой приводится к long double.

· В противном случае, если какой-либо из операндов принадлежит типу double, то и другой приводится к double.

· В противном случае, если какой-либо из операндов принадлежит типу float, то и другой приводится к float.

· В противном случае операнды типов charи shortприводятся к int.

· И наконец, если один из операндов типа long, то и другой приводится к long.

Заметим, что операнды типа floatне приводятся автоматически к типу double; в этом данная версия языка отличается от первоначальной. Вообще говоря, математические функции, аналогичные собранным в библиотеке ‹math.h›, базируются на вычислениях с двойной точностью. В основном floatиспользуется для экономии памяти на больших массивах и не так часто - для ускорения счета на тех машинах, где арифметика с двойной точностью слишком дорога с точки зрения расхода времени и памяти.

Правила преобразования усложняются с появлением операндов типа unsigned. Проблема в том, что сравнения знаковых и беззнаковых значений зависят от размеров целочисленных типов, которые на разных машинах могут отличаться. Предположим, что значение типа intзанимает 16 битов, а значение типа long- 32 бита. Тогда -1L ‹ 1U, поскольку 1U принадлежит типу unsigned intи повышается до типа signed long. Но -1L ›1UL, так как -1L повышается до типа unsigned longи воспринимается как большое положительное число.

Преобразования имеют место и при присвоениях: значение правой части присвоения приводится к типу левой части, который и является типом результата.

Тип charпревращается в intпутем распространения знака или другим описанным выше способом.

Тип long intпреобразуются в short intили в значения типа charпутем отбрасывания старших разрядов. Так, в

int i;

char c;

i = c;

c = i;

значение c не изменится. Это справедливо независимо от того, распространяется знак при переводе charв intили нет. Однако, если изменить очередность присваиваний, возможна потеря информации.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Язык программирования Си. Издание 3-е, исправленное»

Представляем Вашему вниманию похожие книги на «Язык программирования Си. Издание 3-е, исправленное» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык программирования Си. Издание 3-е, исправленное»

Обсуждение, отзывы о книге «Язык программирования Си. Издание 3-е, исправленное» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x