我写了以下代码:
#include <stdarg.h>
#include <stdio.h>
double average(int count, ...)
{
va_list ap;
int j;
double sum = 0;
va_start(ap, count); /* Requires the last fixed parameter (to get the address) */
for (j = 0; j < count; j++) {
sum += va_arg(ap, double); /* Increments ap to the next argument. */
}
va_end(ap);
return sum / count;
}
int main(){
int count = 3;
double result = average(count, 10, 20, 20);
printf("result = %f\n", result);
}
我的意图是计算参数总和的平均值(第一个参数除外,它是参数的数量)。但打印值为0.00000。代码有什么问题?
答案 0 :(得分:5)
您正在尝试将int
作为double
阅读,但这不起作用。 cast
并将arg作为int
:
sum += (double) va_arg (ap, int); /* Increments ap to the next argument. */
<强>输出:强>
result = 16.666667
答案 1 :(得分:4)
您没有将double
传递给该函数。尝试
double result = average(count, 10.0, 20.0, 20.0);