The ‘%(’, ‘%{’ and ‘%[’ format directives, with or without field with and precision specifications, are reserved for future use. Don’t use them and don’t rely on current experiment to predict future behaviour. To print ‘(’, simply use ‘(’ rather than ‘%(’. Likewise for ‘{’ and ‘[’.
Similarly, a ‘%’ character followed by any other unrecognised
character (i.e., not a known directive or printf
field width
and precision specifier), is discarded (but the unrecognised character
is printed), and a warning message is printed to the standard error
output (because it was probably a typo). Don’t rely on this
behaviour, because other directives may be added in the future.