Zastanawiam się, czy to daje w niezdefiniowanej zachowań:Czy wywołanie printf z nadmiernymi argumentami niezdefiniowanego zachowania?
printf("Test %d %s", 123, "abc", "def", "ghi");
Pierwsze dwa argumenty po format string pasuje ciąg formatu, więc są OK; ale 3 i 4 argumenty są w nadmiarze, ponieważ nie ma więcej odpowiednich specyfikatorów formatu.
IMHO printf()
powinien po prostu zignorować te nadmierne argumenty i nie powinno być żadnych UB. Czy to jest poprawne?
Myślę, że to pytanie jest jak pytanie "Czy funkcja akceptująca varargs może przyjmować dowolną liczbę argumentów?". Mechanizm, który pozwala na posługiwanie się zmienną liczbą argumentów, działa niezależnie od tego, w jaki sposób funkcja używa tych argumentów ... – SJuan76