Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Форматный вывод





Форматный вывод числовых результатов на стандартное устройство вывода (stdout), которым по умолчанию является экран дисплея, осуществляется с помощью функции printf. Например:

#include <stdio.h> int main(){ int i; float f; double d;.......... printf("%d %f %lf", i+1, f, f*d);

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

Для преобразования числовых данных из машинного формата используются форматные указатели, общий вид которых содержит расширенный набор признаков:

%[флажки][ширина][.точность][{l|h|L}]{d|i|u|o|x|X|f|e|E|g|G}

Поле ширина определяет количество знакомест на экране, где будет размещено выводимое значение. Как правило, его задают с некоторым запасом, чтобы смежные значения не сливались друг с другом. Выводимое число прижимается младшим разрядом к правой границе указанного поля. Это обеспечивает общепринятый способ вывода числовых таблиц, когда в столбцах одноименные разряды чисел располагаются друг под другом. Если заданная ширина меньше, чем это требуется для выводимого значения, то оно все равно будет выведено полностью, но стройность колонок в таблицах при этом будет нарушена.

Поле флажков может содержать до четырех управляющих символов из набора [–,+,пробел,0,#]. Символ "минус" устанавливает прижим выводимого значения к левой границе выделенного поля (по умолчанию действует правый прижим). Символ "плюс" устанавливает обязательный режим вывода знака числа (даже если оно положительно). Символ "пробел" устанавливает такой режим, при котором вместо знака "+" выводится пробел. Символ "нуль" устанавливает режим вывода чисел, при котором старшие незначащие позиции поля вывода заполняются нулями.

Символ # влияет на формат вывода восьмеричных, шестнадцатеричных и вещественных чисел. При его использовании перед восьмеричными числами выводится лидирующий нуль, перед шестнадцатеричными числами - префикс 0x или 0X. Для форматов f, e, и E обязательно отображается десятичная точка после целой части (по умолчанию, числа, у которых дробная часть равна 0, выводятся без десятичной точки). Для форматов g и G не удаляются лидирующие нули и всегда выводится десятичная точка.

В табл. 4 и 5, заимствованных из файла помощи, показаны способы вывода целочисленного значения I=555 и вещественного значения R=5.5 при различных комбинациях флажков.

Необязательное поле точность задает для целочисленных значений обязательное количество цифр (если число меньше, то перед его старшим разрядом добавляется необходимое количество нулей). Например, вывод целочисленного значения -5 по формату %8.4d выделяет в строке вывода поле из восьми символов, на котором первые три позиции заполнены пробелами, а следующие пять символами -0005.

Для данных вещественного типа поле точность определяет количество цифр в дробной части числа. Не забывайте о количестве значащих цифр, хранение которых обеспечивает тот или иной тип данных. Например, если переменной типа float присвоить значение 3.14159265, то на выводе по формату %10.8f мы увидим результат 3.14159274. Двум последним цифрам результата доверять нельзя, т.к. формат float обеспечивает хранение 7-8 десятичных цифр.

Таблица 4.
Флажки Формат %6d Формат %6o Формат %8x
%-+#0 +555   0x22b
%-+# +555   0x22b
%-+0 +555   22b
%-+ +555   22b
%-#0     0x22b
%-#     0x22b
%-0     22b
%-     22b
%+#0 +00555   0x00022b
%+# +555   0x22b
%+0 +00555   0000022b
%+ +555   22b
%#0     0x00022b
%#     0x22b
%0     0000022b
%     22b
Таблица 5.
Флажки Формат %10.2e Формат %10.2f  
%-+#0 +5.50e+00 +5.50  
%-+# +5.50e+00 +5.50  
%-+0 +5.50e+00 +5.50  
%-+ +5.50e+00 +5.50  
%-#0 5.50e+00 5.50  
%-# 5.50e+00 5.50  
%-0 5.50e+00 5.50  
%- 5.50e+00 5.50  
%+#0 +005.50e+00 +0000005.50  
%+# +5.50e+00 +5.50  
%+0 +005.50e+00 +0000005.50  
%+ +5.50e+00 +5.50  
%#0 005.50e+00 0000005.50  
%# 5.50e+00 5.50  
%0 005.50e+00 0000005.50  
% 5.50e+00 5.50  
           

Разница между форматами %0x и %0X заключается в том, что в первом случае шестнадцатеричная запись числа формируется из малых букв [a,b,c,d,e,f], а во втором случае – из больших букв [A,B,C,D,E,F].

Для вывода однобайтовых целочисленных данных со знаком (типа char) можно пользоваться одним из следующих форматов - %o, %0x, %0X, %i, %d, %ho, %hx, %hX, %hi, %hd. Для вывода однобайтовых целых без знака наряду с перечисленными указателями допустим формат %u. Однако следует иметь ввиду, что однобайтовые значения расширяются до двухбайтовых, сохраняя знак числа. Поэтому попытка вывести однобайтовое значение 127 по формату %u приведет к правильному результату. Но если мы по такому же формату выдадим число –5, то результатом будет число 65531 (дополнение до максимального двухбайтового числа).

Вывод числовых результатов вещественного типа предусматривает две формы отображения – с фиксированной запятой (форматные указатели %f и %lf) или с плавающей запятой (форматные указатели %e и %E). Форматные указатели %g и %G предлагают системе самой выбрать один из этих форматов, который окажется более компактным для выводимого значения. Большая или маленькая буква в форматных указателях с плавающей запятой приводит к тому, что порядку числа предшествует большая или маленькая буква "e".

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

x1=127; x2=-350; printf("x1=%d x2=%d",x1,x2);

на экране дисплея появится строка:

x1=127 x2=-350

Если мы хотим расположить выводимую информацию на экране дисплея с начала следующей строки, то в начале форматных указателей обычно вставляют управляющий символ "\n":

printf("\nx1=%d x2=%d",x1,x2);

Такой же управляющий символ может быть включен в середину или в конец форматной строки. В языках C, C++ с помощью символа "\" в форматную строку могут быть включены и другие управляющие символы (так называемые Escape-последовательности), список которых приведен в табл. 6.

Таблица 6.
Символ Назначение Символ Назначение
\a Звуковой сигнал (код 0x07, BEL) \\ Отображение символа \
\b Забой предыдущего символа (код 0x08, Backspace) \' Отображение символа '
\f Переход на новую страницу (код 0x0C, FF) \" Отображение символа "
\n Переход на следующую строку (код 0x0A, LF) \? Отображение символа?
\r Возврат в начало текущей строки (код 0x0D, CR) \0xxx Отображение символа с восьмеричным кодом xxx
\t Горизонтальная табуляция (код 0x09, HT) \xhh Отображение символа с шестнадцатеричным кодом hh
\v Вертикальная табуляция (код 0x0B, VT) \xHH Отображение символа с шестнадцатеричным кодом HH

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

Date: 2015-05-22; view: 861; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию