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

可変個引数関数の引数として渡される変数はデフォルトでプロモートされ、すべてfloatのsがdoublesになります。引数を持つことはできません(引数を持つことができfloatないのと同じように)。で、常にを意味します。charprintf%fdouble

于 2012-09-11T05:41:30.913 に答える