69,336
社区成员
发帖
与我相关
我的任务
分享
#include <stdarg.h>
#include <cstdio>
#include <cassert>
void va_test(int ifirst, ...)
{
int ivalue = ifirst;
va_list va;
va_start(va, ifirst);
while (-1 != ivalue)
{
printf("%d ", ivalue);
ivalue = va_arg(va, int);
}
printf("\n");
va_end(va);
}
void va_test(float ffirst, ...)
{
float fvalue = ffirst;
va_list va;
va_start(va, ffirst);
while (-1.0000001f > fvalue || -0.9999999f < fvalue)
{
printf("%f ", fvalue);
fvalue = va_arg(va, float);
}
printf("\n");
va_end(va);
}
void va_test(double dfirst, ...)
{
double dvalue = dfirst;
va_list va;
va_start(va, dfirst);
while (-1.0000001 > dvalue || -0.9999999 < dvalue) // ignore it
{
printf("%f ", dvalue);
dvalue = va_arg(va, double);
}
printf("\n");
va_end(va);
}
int main(int argc, char * argv[])
{
assert(sizeof(int) == sizeof(float));
va_test(1, 2, 3, -1); // as we want
va_test(1.0, 2.0, 3.0, -1.0); // as we want
va_test(1.0f, 2.0f, 3.0f, -1.0f); // badly
return(0);
}