0

当我使用可变参数时,它适用于 int 和 double,但是当涉及到 float 时,就会发生错误。

这是代码。

void vaParamTest(int a, ...)
{
    va_list ap;
    va_start(ap, a);
    for (int  i = 0; i < a; i++)
        printf("%f\t", va_arg(ap, float));
    putchar('\n');
    va_end(ap);
}

我传递这样的参数。

vaParamTest(3, 3.5f, 8.3f, 5.1f);
4

1 回答 1

10

作为可变参数函数参数传递的变量是default-promoted,这使得所有floats 都成为doubles。你永远不能float争论(就像你永远不能char争论一样)。在printf%f总是意味着double

于 2012-09-11T05:41:30.913 回答