gpt4 book ai didi

c++ - 打印 NaN 值

转载 作者:可可西里 更新时间:2023-11-01 09:26:00 32 4
gpt4 key购买 nike

如何让下面的代码工作?我想打印“未定义”而不是 -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 已经“消耗”了一个参数。

关于c++ - 打印 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947320/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com