Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

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

Язык программирования C. Лекции и упражнения (6-е изд.) 2015: краткое содержание, описание и аннотация

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

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 — читать онлайн бесплатно полную книгу (весь текст) целиком

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

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

Интервал:

Закладка:

Сделать

Как можно видеть на рис. 4.7, управляющая строка содержит два разных вида информации:

• символы, которые в действительности выводятся;

• спецификаторы преобразования.

Рис 47 Структура управляющей стракн Внимание Не забудьте предусмотреть по - фото 87

Рис. 4.7. Структура управляющей стракн

Внимание!

Не забудьте предусмотреть по одному спецификатору преобразования для каждого элемента, следующего за управляющей строкой. Если вы не удовлетворите это основное требование, возникнут проблемы. Никогда не поступайте так:

printf("Выпало %d очков из %d.\n", scorel);

Здесь отсутствует значение для второго спецификатора %d. Результат такой небрежности зависит от системы, но в лучшем случае на экране отобразятся бессмысленные символы.

Если вы хотите вывести только фразу, то не нуждаетесь в каких-либо спецификаторах преобразования. Чтобы вывести только данные, вы можете обойтись традиционным вызовом. Оба следующих оператора из листинга 4.6 вполне приемлемы:

printf("До свидания! Ваше искусство слишком дорого мне обходится,\n"); printf("%c%d\n", 2 * cost);

Обратите внимание, что во втором операторе первый элемент в списке для вывода представляет собой символьную константу, а не переменную, тогда как второй элемент является результатом умножения. Это иллюстрирует тот факт, что функция printf() работает со значениями, будь они переменными, константами или выражениями.

Поскольку функция printf() использует символ % для идентификации спецификаторов преобразования, то возникает небольшая проблема, когда требуется вывести сам символ %. Если просто указать одиночный знак %, компилятор посчитает, что вы некорректно задали спецификатор преобразования. Выход из этой ситуации прост: достаточно указать два символа %:

рс = 2*6;

printf("Только %d%% припасов Мэри были пригодными в пищу.\n", рс);

В результате выполнения этого фрагмента программы получим следующий результат:

Только 12% припасов Мэри были пригодными в пищу.

Модификаторы спецификаторов преобразования для функции printf()

Базовый спецификатор преобразования можно изменять, вставляя модификаторы между знаком % и символом, который определяет преобразование.

Символьные строки и форматированный ввод-вывод 133

В табл. 4.4 и 4.5 перечислены символы, которые можно здесь размещать. При указании более одного модификатора они должны располагаться в том же порядке, в каком они представлены в табл. 4.4. Не все возможные комбинации допустимы. В таблице отражены дополнения стандарта С99; ваша реализация может не поддерживать все показанные варианты.

Таблица 4.4. Модификаторы функции printf()

134 Глава 4 НА ЗАМЕТКУ Переносимость типов Вспомните что операция si zeof - фото 88

134 Глава 4

НА ЗАМЕТКУ! Переносимость типов

Вспомните, что операция si zeof возвращает размер типа или значения в байтах. Это значение должно быть какой-либо формой целого числа, но стандарт допускает только целое значение без знака. Следовательно, им может быть unsigned int, unsigned long или даже unsigned long long. Таким образом, в случае применения функции printf() для отображения выражения sizeof можно было бы использовать спецификатор %u в одной системе, %lu — в другой и %llu — в третьей. Это значит, что нужно выяснить правильное применение в конкретной системе, и что в случае переноса в другую систему может потребоваться изменить программу.

Итак, помимо всего прочего, язык С предоставляет поддержку для обеспечения более высокой переносимости типов. Во-первых, заголовочный файл stddef.h (включаемый в результате включения заголовочного файла stdio.h) определяет, что типом sizet будет тип, используемый в системе для возвращаемого значения операции sizeof. Этот тип называется основополагающим типом. Во-вторых, в функции printf() применяется модификатор z для указания соответствующего типа при выводе. Аналогично в языке С определен тип pt rdi f f_t и модификатор t для указания основополагающего целочисленного типа со знаком, используемого системой для представления разницы между двумя адресами.

НА ЗАМЕТКУ! Преобразование аргументов типа float

Существуют спецификаторы преобразования для вывода типов double и long double. В то же время такой спецификатор для типа float отсутствует. Причина в том, что в классическом языке K&R С значения типа float автоматически преобразовывались в тип double перед использованием в выражении или до передачи в качестве аргумента. В общем случае в стандарте ANSI С (или последующих реализациях) не предусматривается автоматическое преобразование float в double. Однако для того, чтобы обеспечить правильную работу огромного количества существующих программ, которые разрабатывались с расчетом на то, что аргументы типа float преобразуются в double, все аргументы float для функции printf() — и других функций С, не использующих явные прототипы — автоматически преобразуются в тип double. Поэтому ни в K&R С, ни в ANSI С специальный спецификатор преобразования для отображения типа float не требуется.

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

Интервал:

Закладка:

Сделать

Похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»

Представляем Вашему вниманию похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»

Обсуждение, отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x