`printValues` 期望后面是一堆 `int` ,但是传给它的是一个 `va_list` 。`va_list` 不是 `int`,当然就不对了。 如果想想现在这样调用,那么 `printValues` 的参数就应该是 `va_list args` ,而不是 `...` 。 `printValues(int count, va_list args)` * * * C 的 printf 就有 v 系列函数,比如: `int vprintf(const char *format, va_list arg);` 就是用 `va_list` 作为参数。