Когда я использую переменные параметры, он хорошо работает с 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);
Переменные, которые передаются в качестве аргументов переменной функции по умолчанию раскрученной, что делает все float
с в double
s. Вы никогда не можете иметь float
аргумент (так же, как ты никогда не сможешь иметь char
аргумент). В printf
, %f
всегда значит double
,
Других решений пока нет …