我正在编写一个简单的可变参数函数,它将一系列整数相加并返回总和。我在理解它的工作原理时遇到了一些麻烦,尽管我觉得我的代码方向正确,但我的代码似乎不起作用。(贴在下面)这个函数的规范是它至少需要一个参数,最后一个参数总是为零(如在 main 中调用的那样)。我还被告知,根据我的机器,我不一定会得到我正在寻找的输出,正如你所想象的那样,这会使我的情况进一步复杂化。非常感谢您对纠正我的 Sum() 函数的帮助。
编辑:这应该在不使用 stdarg.h 标头的情况下完成,因此没有 va_arg 函数。
int Sum(int a, ... ) {
int sum = 0, *addy = &a;
while (*addy) {
sum += *addy;
addy += sizeof(a);
}
return sum;
}
int main() {
printf("%d %d %d %d\n", Sum(0), Sum(3, 5, 6, 7, 0),
Sum(7, 2, 42, 3, 5, -4, 0), Sum(-1, 9, 12, 123, -213, 42, 7, 2, 0));
}
//Expected output: 0 21 55 -19
//My output: 0 32770 32770 32776