Per the C standard, this number is the minimum field width. If the converted value has fewer characters than the minimum field with, it is padded with spaces. If it has the same number or more, the entire converted value is printed—it is not reduced to the given width.
Quoting from C 2018 7.21.6.1 4:
An optional minimum field width. If the converted value has fewer characters than the field width, it is padded with spaces (by default) on the left (or right, if the left adjustment flag, described later, has been given) to the field width. The field width takes the form of an asterisk * (described later) or a nonnegative decimal integer.
That is just part of paragraph 4. In its entirety, it gives the entire format of a conversion specification, which is a %
followed by:
— Zero or more flags (in any order) that modify the meaning of the conversion specification.
— An optional minimum field width. If the converted value has fewer characters than the field width, it is padded with spaces (by default) on the left (or right, if the left adjustment flag, described later, has been given) to the field width. The field width takes the form of an asterisk *
(described later) or a nonnegative decimal integer.
— An optional precision that gives the minimum number of digits to appear for the d
, i
, o
, u
, x
, and X
conversions, the number of digits to appear after the decimal-point character for a
, A
, e
, E
, f
, and F
conversions, the maximum number of significant digits for the g
and G
conversions, or the maximum number of bytes to be written for s
conversions. The precision takes the form of a period (.
) followed either by an asterisk *
(described later) or by an optional nonnegative decimal integer; if only the period is specified, the precision is taken as zero. If a precision appears with any other conversion specifier, the behavior is undefined.
— An optional length modifier that specifies the size of the argument.
— A conversion specifier character that specifies the type of conversion to be applied.