c - C 中的可变参数列表不起作用

标签 c variadic-functions

我曾尝试在使用 stdarg.h 的 C 语言中运行以下代码,但由于某种原因我无法让它工作。我没有使用可变参数列表的经验,所以请有人帮忙!

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

int add_stuff_together(int numb_count, ...);

int main()
{
    int x = add_stuff_together(2, 1, 1);

    printf("%i", x);

    return 0;
}

int add_stuff_together(int numb_count, ...)
{
    int sum, repeat_times;
    va_list args;
    va_start(args, numb_count);

    for (repeat_times = 0; repeat_times < numb_count; repeat_times++)
    {
        sum = sum +  va_arg(args, int);
    }
    return sum;
}

我得到的输出是: 172998379

谁能解释一下为什么我会得到这个答案?

最佳答案

您的 sum 变量未初始化,因此它的值可以默认为任何值。

另请注意,您不使用 va_end() 宏,但您应该这样做。

关于c - C 中的可变参数列表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17908056/

上一篇:C ascii 字符表

下一篇:C中的控制指令

相关文章:

c -/usr/include/unistd.h 和 limit.h 来自 glibc 或内核

swift - 为什么带有可变参数的swift函数不能接收数组作为参数

android - Kotlin (Android) - 为非可变函数传播一个数组/列表

c - 如何将格式化数据添加到 printf() 调用之前

c++ - 函数参数包

c++ - 从可变参数模板中的一组仿函数中调用带有参数的函数

C程序Mac打开Safari网站

c - 字符串文字/转义

c - 如何提高数组排序效率

c - 在 C 中创建 get_time() 函数时出现问题