2

我正在尝试用 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;
}
4

1 回答 1

3

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

当您修改调用传递 2 时,函数返回的结果是 15

于 2012-07-02T00:06:23.200 回答