Tôi tự hỏi nếu điều này mang lại trong hành vi undefined:Đang gọi printf với các đối số dư thừa hành vi không xác định?
printf("Test %d %s", 123, "abc", "def", "ghi");
Hai đối số đầu tiên sau chuỗi định dạng phù hợp với chuỗi định dạng, vì vậy đây là những OK; nhưng các đối số thứ 3 và thứ 4 bị vượt quá vì không có thêm các định dạng tương ứng.
IMHO printf()
chỉ đơn giản là bỏ qua các đối số dư thừa này và không nên có UB. Điều này có đúng không?
Tôi nghĩ rằng câu hỏi này giống như hỏi "Có thể một hàm chấp nhận varargs có bất kỳ số đối số nào không?". Cơ chế cho phép xử lý một số biến đối số hoạt động bất kể những gì cụ thể về cách hàm sử dụng các đối số đó ... – SJuan76