Rick,
When a function accepts a variable number of arguments, its prototype does not (and cannot) provide any information about the number and types of those variable arguments. Therefore, the usual protections do not apply in the variable-length part of variable-length argument lists: the compiler cannot perform implicit conversions or (in general) warn about mismatches
For example with any compiler of your choosing compile up printf("Hello %d"); You will not find a compiler which points out that you're missing a parameter. If you find an example counter to this please do point it out.