Here is a table that summarizes the various conversion specifications:
Matches an optionally signed integer written in decimal. See Numeric Input Conversions.
Matches an optionally signed integer in any of the formats that the C language defines for specifying an integer constant. See Numeric Input Conversions.
Matches an unsigned integer written in octal radix. See Numeric Input Conversions.
Matches an unsigned integer written in decimal radix. See Numeric Input Conversions.
Matches an unsigned integer written in hexadecimal radix. See Numeric Input Conversions.
Matches an optionally signed floating-point number. See Numeric Input Conversions.
Matches a string containing only non-whitespace characters. See String Input Conversions.
Matches a string of one or more characters; the number of characters read is controlled by the maximum field width given for the conversion. See String Input Conversions.
This matches a literal ‘%’ character in the input stream. No corresponding argument is used.
If the syntax of a conversion specification is invalid, the behavior is undefined. If there aren’t enough function arguments provided to supply addresses for all the conversion specifications in the template strings that perform assignments, or if the arguments are not of the correct types, the behavior is also undefined. On the other hand, extra arguments are simply ignored.