NULL 代替 C 语言 99 标准中的双精度



我正在研究一个循环双链表,其中包含具有 99 标准的 C 语言哨兵。 我被允许用于类的标头是stdio.h,stdlib.h和assert.h。

哨兵是一个结构体,结构有一个值数据成员,它是一个双精度值。 我想知道是否有双打的 NULL 替代品? 似乎 NULL 可用于整数数据类型,但不能用于双精度数据类型。 我尝试使用 Nan 和 NAN,但编译器不接受这些。 我考虑使用任意数字,但想知道在这种特定情况下是否有 NULL 的特定替身?

NaN 是适合您寻求的目的的值。C 提供了一个符号NAN可用于表示 NaN。但是,NAN的定义在 <math.h> 中提供,这不在允许您使用的标头中。相反,您可以在包含 <stdlib.h> 之后通过 double NaN = strtod("NAN", 0); 获得 NaN。(感谢 chux 的提醒。

分配要求您在double中使用哨兵值而不允许您访问<math.h>似乎很奇怪。您可能应该在结构的指针成员中使用 null 指针,而不是尝试使用 double 来标记列表的末尾。或者,如果不是空指针,则向结构中添加另一个成员以用于标记结束。或者通过记住您进入列表的位置来确定结尾 - 当您遍历循环列表回到起点时,您已经完全遍历了列表。

相关内容

  • 没有找到相关文章

最新更新