变量函数不能正确解析参数

时间:2012-07-02 00:03:03

标签: c variadic-functions

我正在尝试在C中创建一个简单的加法计算器,以学习如何使用无限的参数。以下编译正确,但输出始终不正确,我不知道调试它。任何指针都会很棒。

#include <stdio.h>
#include <stdarg.h>

int calculateTotal(int n, ...)
{

    //declartion of a datatype that would hold all arguments
    va_list arguments;

    //starts iteration of arguments
    va_start (arguments, n);

    //declarion of initialization for 'for loop'
    //declation of accumulator
    int i = 0;
    int localTotal = 0;

    for(i; i < n; i++)
    {
        //va_arg allows access to an individual argument
        int currentArgument = va_arg(arguments, int);
        localTotal += currentArgument;
    }

    //freeing the declaration of the datatype that holds the information
    va_end(arguments);

    return localTotal;
}

int main()
{
    int total = calculateTotal(56,7,8);
    printf("Total > %d\n",total);

    return 0;
}

1 个答案:

答案 0 :(得分:3)

你传递56作为第一个参数而不是2.函数然后将56解释为参数的数量,并继续读取它在初始化区域之后的“参数”。

修改通过2的呼叫时,result returned from the function is 15