在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