Jac*_*ack 9 c floating-point nan c89
可能重复:
C中的NaN Literal?
我在ANSI C中编写一个函数,它接收两个数字作为参数.参数是int或float类型.根据我的过滤器,该数字可能有效,也可能无效.如何返回某些值意味着失败?返回类型是float.我想到的第一件事就是NaN抽象类型.但我不知道如何用ANSI C表示它.
(抱歉我的英语不好.英语不是我的母语)
Ste*_*non 12
NaN不是"抽象类型".它是浮点数据的值.
如果用"ANSI C"表示标准C(这个术语的实际含义,就像它有一个那样),包括<math.h>并使用NAN宏来产生一个纳米,并isnan(x)检测一个.
如果用"ANSI C"你实际上意味着长期替换的C89标准(有些人打算,即使它不是正式的正确),你可以生成一个NaN值0./0.,并检查一个x != x.
根据我的"过滤器,这个数字可能无效的问题,那么如何返回一些值意味着失败?
而不是将数字与NaN进行比较,您可以使用:
if (x != x) // x is NaN
Run Code Online (Sandbox Code Playgroud)
如注释中所述,您可以使用此表达式在C89中0.f / 0.f生成floatNaN值.