说一下这个C语言 | 每日基础(84)

读者:怎样测试 IEEE NaN 以及其它特殊值?

阿一:许多实现高质量 IEEE 浮点的系统会提供简洁的工具去处理这些特殊值。例 如, 在 <math.h> 以非标准扩展功能, 或可能以 <ieee.h> 或 <nan.h> 提供预定义 常数, 及象 isnan() 这类的函数。这些工具的标准化进程正在进行中。一个粗陋但 通常有效的测试 NaN 的方法:#define isnan(x) ((x) != (x)) 虽然一些不支持 IEEE 的编译器可能会把这个判断优化掉。C99 提供 isnan(), fpclassify() 及其它一些类别的例程。必要时, 还可以用 sprintf() 格式化需测试的值, 在许多系统上, 它会产生 “NaN” 或 “Inf” 的字符串。你就可以比较了。

读者:在 C语言中如何很好的实现复数?

阿一:这其实非常直接, 定义一个简单结构和相关的算术函数就可以了。C99 在标准中支持复数类别。

正文完