Возьмем следующую программу:
#include <stdio.h>
int main()
{
long t =57 ;
printf("[%+03ld]", t);
}
и его вывод:
[+57]
Я как-то запутался: я сказал ему дополнить вывод до ширины 3 (03ld
) нулями, однако кажется, что если я заставлю вывод поставить знак плюс перед числом (+
), он не добавит требуемых нулей, если длина номера уже 2 цифры (как в 57). Для чисел ‹10 он дополняется 1 нулем.
Из http://www.cplusplus.com/reference/cstdio/printf/
(0) -> Дополняет число слева нулями (0) вместо пробелов, если указано заполнение (см. подспецификатор ширины).
(+) -> Заставляет предварять результат знаком плюс или минус (+ или -) даже для положительных чисел. По умолчанию знак - предшествует только отрицательным числам.
(ширина) -> Минимальное количество символов для печати. Если печатаемое значение короче этого числа, результат дополняется пробелами. Значение не усекается, даже если результат больше.
Поэтому мне просто нужно пояснение... Спецификатор (width)
из приведенной выше цитаты относится к полной длине выходной строки (т.е. к символам, которые будут напечатаны), контролируемой этим спецификатором формата ("%+03ld"
), или к полной длине символов числа, которое будет напечатано?