print NaN value

print NaN value

本文关键字:value NaN print      更新时间:2023-10-16

我如何使下面的代码工作?我想打印"未定义"而不是-1。# IND00

int myprint(const char* format, ...)
{
    va_list args;
    va_start (args, format);
    int ret;
    if(_isnan(static_cast<float>(*args)))
        ret = printf ("non defined");
    else
        ret = vprintf (format, args);
    fflush(stdout);
    va_end (args); 
    return ret; 
}
int main()
{
    myprint("%f", sqrt(-1.0));
    return 0;
}

你不能像那样使用args,你必须使用va_arg来获得一个实际的参数

if(_isnan(va_arg(args,double)))

可以解决这个问题,但是对你没有多大帮助。您不能从参数中推断类型。输入给va_arg的类型必须是传入对象的实际类型

并且,您的vprintf调用也不会工作,您需要"重新启动"va_list,因为va_arg已经"消耗"了一个参数。