Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л4.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
256 Кб
Скачать

Точность

  • (.)Точка, которая отделяет ширину поля от следующей строки цифр.

  • (.0)Для d, i, o, u, x точность по умолчанию. Для e, E, f десятичная точка отсутствует.

  • (.nnn) Строка цифр (точность), которая указывает максимальное число символов строки, которые должны быть напечатаны, или число печатаемых справа от десятичной точки цифр для переменных типа float или double. По умолчанию точность равна 6.

Модификатор

  • (l) Модификатор длины l, который указывает, что соответствующий элемент данных имеет тип long, а не int.

  • (h) Модификатор длины h, который указывает, что соответствующий элемент данных имеет тип short, а не int.

  • (F) Аргумент рассматривается как far–указатель.

  • (N) Аргумент рассматривается как near–указатель.

Пример:

Р=15.6734;

По умолчанию данное число принимает вид:

Р=15.673400 (количество символов после десятичной точки по умолчанию равно 6)

12 – Результат: 1 5 . 6 7 3 4 0 0

.12– Результат: 15. 6 7 3 4 0 0 0 0 0 0 0 0

12 .– Результат 1 6 (Если дробная часть <=5, то округляется в сторону уменьшения, а если >5 - в сторону увеличения)

12 .2– Результат: 1 5 . 6 7

Символы преобразования и их смысл Тип переменной int

d аргумент преобразуется к десятичному виду(тип int) со знаком.

i аргумент преобразуется к десятичному виду(тип int) со знаком.

o аргумент преобразуется в беззнаковую восьмеричную форму (без лидирующего нуля) - тип unsigned int.

x аргумент преобразуется в беззнаковую шестнадцатеричную форму (без лидирующих 0х) - тип unsigned int. При выводе используются символы 0 – f.

X аргумент преобразуется в беззнаковую шестнадцатеричную форму (без лидирующих 0X) - тип unsigned int. При выводе используются символы 0 – F.

u аргумент преобразуется в беззнаковую десятичную форму - тип unsigned int.

Тип переменной char

c аргумент рассматривается как отдельный символ.

Тип переменной char*

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

Тип переменной float

f аргумент, рассматриваемый как переменная типа float или double, преобразуется в десятичную форму в виде [-]mmm.nnnnn, где длина строки из n определяется указанной точностью. Точность по умолчанию равна 6. Отметим, что эта точность не определяет количество печатаемых в формате f значащих цифр.

e аргумент, рассматриваемый как переменная типа float или double, преобразуется в десятичную форму в виде [-]m.nnnnnne[+-]хх, где длина строки из n определяется указанной точностью. Точность по умолчанию равна 6.

E аргумент, рассматриваемый как переменная типа float или double, преобразуется в десятичную форму в виде [-]m.nnnnnnE[+-]хх, где длина строки из n определяется указанной точностью. Точность по умолчанию равна 6.

g используется или формат %е или %f, какой короче; незначащие нули не печатаются. Если идущий за % символ не является символом преобразования, то печатается сам этот символ; следовательно, символ % можно напечатать, указав %%.

G используется или формат %E или %F, какой короче; незначащие нули не печатаются. Если идущий за % символ не является символом преобразования, то печатается сам этот символ; следовательно, символ % можно напечатать, указав %%.

Примеры:

int x;

float y;

x=78;

y=98.56;

printf("Действительные числа -\n %12f\n %-12f\n %12.f\n",y,y,y);

printf("Действительные числа -\n %f\n %.4f\n %e\n",y,y,y);

printf("Целые -\n %d\n %o\n %u\n %x\n",х,x,x,x);

Результат:

Действительные числа –

98.559998

98.559998

99

Действительные числа –

98.559998

98.5600

9.856000e+1

Целые –

78

116

78

4e

Большинство из форматных преобразований очевидно и было проиллюстрировано в предыдущих главах. Единственным исключением является то, как точность взаимодействует со строками. Следующая таблица демонстрирует влияние задания различных спецификаций на печать "hello, world" (12 символов). Мы поместили двоеточия вокруг каждого поля для того, чтобы вы могли видеть его протяженность.

:%10s: :hello, world:

:%-10s: :hello, world:

:%20s: : hello, world:

:%-20s: :hello, world :

:%20.10s: : hello, wor:

:%-20.10s: :hello, wor :

:%.10s: :hello, wor:

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

Самостоятельная проработка:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]