Инструкции, передаваемые функции printf( ), когда мы "просим" ее напечатать некоторую переменную, зависят от того, какого типа эта переменная. Например, при выводе на печать целого числа применяется формат %d, а при выводе символа - %с. Ниже перечислены все форматы, указываемые при обращениях к функции printf(), а затем показано, как они используются. Каждому форма ту соответствует тип выводимой (с их помощью) информации, причем первые пять покрывают большинство возникающих потребностей, а остальные четыре применяются достаточно редко.
Формат | Тип выводимой информации | ||
---|---|---|---|
%d | Десятичное целое число | ||
%с | Один символ | ||
%s | Строка символов | ||
%е | Число с плавающей точкой, экспоненциальная запись | ||
%f | Число с плавающей точкой, десятичная запись | ||
%g | Используется вместо записей | ||
%f | или %е, если он короче | ||
%u | Десятичное целое число без знака | ||
%о | Восьмеричное целое число без знака | ||
%x | Шестнадцатеричное целое число без знака |
Посмотрим теперь, как эти форматы применяются.
Использование функции printf( )
Приведем программу, иллюстрирующую обсуждаемые вопросы:
Результат выглядит так:
Формат, указываемый при обращении к функции printf( ), выглядит следующим образом:
Аргумент1, Аргумент2 и т. д. - это печатаемые параметры которые могут быть переменными, константами или даже выражениями, вычисляемыми вначале, перед выводом на печать.
Управляющая строка - строка символов, показывающая, как должны быть напечатаны параметры. Например, в операторе:
управляющей строкой служит фраза в кавычках (учитывая предыдущие замечания, это - строка символов), a number и ouzo - аргументы или в данном случае значения двух переменных.
РИС. 4.6. Аргументы функции printf( )
Приведем еще пример:
На этот раз список аргументов содержит только один элемент - символическую константу PI.
Мы видим, что в управляющей строке содержится информация двух различных видов:
1. Символы, печатаемые текстуально.
2. Идентификаторы данных, называемые также "спецификациями преобразования".
РИС. 4.7. Структура управляющей строки
Каждому аргументу из списка, следующего за управляющей строкой, должна соответствовать одна спецификация преобразования. Горе вам, если вы забудете это основное требование. Никогда не пишите, например, так:
3десь отсутствует аргумент для второй спецификации преобразования %d. Способ проявления этой ошибки целиком зависит от вашей вычислительной системы, но в лучшем случае вы получите бессмыслицу.
Если вам нужно напечатать какую-нибудь фразу, то нет необходимости использовать спецификацию преобразования; если же требуется только вывести данные на печать, то можно обойтись и без использования комментария. Поэтому каждый из операторов, приведенных ниже, вполне приемлем.
Заметим, что во втором примере первый аргумент из печатаемого списка является символьной константой, а не переменной.