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

Тип переменной 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

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

98.559998

98.5600

9.856000e+1

Целые –

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 использует свой первый аргумент для определения числа последующих аргументов и их типов. Если количество аргументов окажется недостаточным или они будут иметь несоответственные типы, то возникнет путаница и вы получите бессмысленные результаты.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: