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

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

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

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - описание и краткое содержание, автор Стивен Прата, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

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

Интервал:

Закладка:

Сделать

130 Глава 4

ФУНКЦИЯ printf()

Инструкции, которые вы даете функции printf(), запрашивая у нее вывод пере менной, зависят от типа этой переменной. Например, ранее мы применяли форму записи %d при выводе целого числа и %с при выводе символа. Эти обозначения называются спецификаторами преобразования, поскольку они определяют, каким образом данные преобразуются в отображаемую форму. Мы приведем список спецификаторов преобразования, которые стандарт ANSI С предоставляет для функции printf(), и затем покажем, как использовать наиболее общие из них. В табл. 4.3 перечислены спецификаторы преобразования и показан вывод, к которому они приводят.

Таблица 4.3. Спецификаторы преобразования и результирующий вывод

Использование функции printf В листинге 46 представлена программа в которой - фото 84

Использование функции printf()

В листинге 4.6 представлена программа, в которой применяются некоторые спецификаторы преобразования.

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

Листинг 4.6. Программа printout, с

Вывод программы выглядит вполне ожидаемо 7 участников соревнований съели - фото 85

Вывод программы выглядит вполне ожидаемо:

7 участников соревнований съели 12.750000 пирожков с вишнями.

Значение pi равно 3.141593.

До свидания! Ваше искусство слишком дорого обходится,

$15600

Формат использования функции printf() имеет вид:

printf(управляющая-строка, элемент1, элемент2, ...);

Здесь элемент 1, эмемент2 и т.д. — это элементы, которые нужно вывести. Ими могут быть переменные, константы или даже выражения, которые вычисляются до того, как значение будет выведено. Далее, управляющая-строка представляет собой символьную строку, описывающую способ вывода элементов. Как упоминалось в главе 3, управляющая строка должна содержать спецификатор преобразования для каждого выводимого элемента. Например, рассмотрим следующий оператор:

printf("%d участников соревнований съели %f пирожков с вишнями.\n", number, pies);

В этом операторе управляющая-строка — это фраза, заключенная в двойные кавычки. Она содержит два спецификатора преобразования, соответствующие number и pies — двум выводимым элементам. На рис. 4.6 показан другой пример применения оператора printf().

Рис 46 Аргументы функции printf Вот еще одна строка из примера - фото 86

Рис. 4.6. Аргументы функции printf()

Вот еще одна строка из примера:

printf("Значение pi равно %f.\n", PI);

На этот раз список элементов состоит только из одного элемента — символической константы PI.

132 Глава 4

Как можно видеть на рис. 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

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

Интервал:

Закладка:

Сделать


Стивен Прата читать все книги автора по порядку

Стивен Прата - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Язык программирования C. Лекции и упражнения (6-е изд.) 2015, автор: Стивен Прата. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x