在Visual Studio 2012中,当我运行下面的代码(它只是计算数字的平均值)时,会给出错误的答案。 for
循环 - 出于某种原因 - 从Number = 1
开始并且超出Number = 9
。变量数参数列表从第二个条目开始
#include <stdio.h>
#include <stdarg.h>
float avg(int Count, ...)
{
va_list Numbers;
va_start(Numbers, Count);
int Sum = 0;
for(int i = 0; i < Count; ++i)
{
int entry = va_arg(Numbers, int);
printf("%d %d\n", i, entry);
Sum += entry;
}
va_end(Numbers);
float av = Sum/Count;
return(av);
}
int main()
{
float Average = avg(10, 1, 2, 3, 4, 5, 6, 7, 8, 9);
printf("The average of the first 10 whole numbers: %f\n", Average);
}
我检查了例如Passing variable number of arguments around但我不明白为什么va_arg
第一次从Numbers
拉第二项。我的机器上运行此代码的结果是:
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 790803
The average of the first 10 whole numbers: 79084.000000