Интересно, дает ли это поведение undefined:
printf("Test %d %s", 123, "abc", "def", "ghi");
Первые два аргумента после строки формата соответствуют строке формата, поэтому все в порядке; но третий и четвертый аргументы превышают, потому что больше нет соответствующих спецификаторов формата.
IMHO printf()
должен просто игнорировать эти избыточные аргументы и не должно быть UB. Правильно ли это?