Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Printf("Стоимость составляет %8.2f", amount);

появится строка

Стоимость составляет 45.58

с тремя дополнительными пробелами перед числом. Чтобы понять, почему это произошло, взгляните на рис.4.14: указатель ширины поля сообщает компилятору, что числовое значение должно быть как бы втиснуто в «коробочку» размером восемь символов. Само по себе число занимает пять из них, включая точку, а неиспользованные символы отображаются на экран в виде пробелов, создавая перед числом пус- тое пространство.

Рис. 4.14. Указатель ширины поля определяет количество пробелов на экране

Если ширина поля, заданного указателем, оказывается меньше количества символов, составляющих чис- ло, Си, тем не менее, выведет число целиком, просто игнорируя в данном случае указатель ширины поля.

Выполнение инструкции

Printf("Стоимость составляет %2.2f", amount);

приведет к появлению сообщения

Стоимость составляет 45.58

Можно также добавить лишнее пространство перед числом, но заполнить его нулями вместо пробелов, как на рис.4.15. Для этого перед числом, определяющим ширину поля, надо поставить символ 0:

Рис. 4.15. Вывод нулей перед числом

printf("Стоимость составляет %08.2f", amount); в результате мы увидим сообщение Стоимость составляет 00045.58

Для того чтобы выровнять значение по левому краю (как бы поместить его слева в нашей воображаемой

«коробочке»), в указатель ширины поля после % вводится знак «минус»

%-8.2f

Лишние пробелы в этом случае появятся после выведенного значения. Инструкция

Printf("Стоимость составляет %-8.2f

в долларах США", amount);

выводит на экран сообщение

Стоимость составляет 45.58 в долларах сша

Как показано на рис. 4.16, число 45.58 опять как бы помещается в «коробочку» из восьми символов, но теперь уже сдвигается к левому краю, а пустое пространство появляется за числом.

Указатель ширины поля может работать как с символьными, так и со строковыми данными. Дополнитель- ные пробелы помещаются перед текстом, сдвигая строку к правому краю воображаемой «коробочки». На- пример, если строковая переменная, называемая message, имеет значение «Привет», то инструкция

Рис. 4.16. Выравнивание по левому краю

Printf("я позвонил, чтобы сказать %8s", message);

отобразит на экране следующую строку

Я позвонил, чтобы сказать Привет

Как показано на рис. 4.17, при выводе значения строковой переменной message

Рис. 4.17. Использование указателя ширины поля при выводе строки

перед ним появятся два дополнительных пробела.

Выбор правильных средств вывода информации

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

Чтобы вывести на экран обычный текст или символы, можно использовать функции puts() или putchar(). Так как эти функции не имеют никаких возможностей форматирования данных, они работают быстрее, и их коды занимают меньший объем на диске, чем коды функции printf(). Имея дело с функцией puts(), прежде всего проверьте, добавляет ли компилятор код «новая строка» автоматически. Если он не делает этого, а вы не проверите сразу, потом вам придется потратить довольно много времени на редактирова- ние программы.

Рис. 4.18. Правила использования функции printf()

Кстати, при работе с функцией printf(), пропуск кода «новая строка» тоже является распространенной оплошностью среди начинающих программистов.

Функция printf() работает медленнее и требует большего объема памяти, но она идеально подходит в тех случаях, когда вам требуется выводить числовые данные, форматировать строки или комбинировать текст и числовые переменные в одной строке. Работая с функцией printf(), следует тщательно следить за тем, чтобы указатели формата соответствовали литералам, константам и переменным в списке данных.

Рис.4.18 иллюстрирует наиболее важные моменты, необходимые, чтобы правильно написать инструкцию, использующую функцию printf().

Вывод в Си++

Все обсуждавшиеся ранее приемы программирования относятся к выводу данных как в языке Си, так и Си++. Однако язык Си++ имеет дополнительный способ вывода данных всех типов.

¶a++ae æepcue u+uru æɵuyye+a sneuwpo++ɵu usgawenacwæou "Books-shop".

Pacupocwpa+e+ue, upogaua, uepesauuca ga++on u+uru unu ee ¬acwen 3AMPE[EHª.

O æcex +apyue+uex upoca6a coo6yawa uo agpecy piracy@books-shop.com

В Си++ существует стандартный поток вывода cout, позволяющий в сочетании с двумя символами «мень-

ше»

(<<)

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

Если у вас есть компилятор Си++, посмотрите документацию к нему. Не исключено, что необходим специ- альный файл заголовков для того, чтобы иметь

* В оригинале insertion operator. Также часто используется термин «оператор вывода».