如果实现声明符合IEEE 754 / IEC 60559(定义了__STDC_IEC_559__),则必须这样做,但C标准并不要求如此。C11 footnote 356:“不定义__STDC_IEC_559__的实现不需要遵守这些规范。”例如,C不需要二进制浮点数-最小要求包括任何浮点类型的范围至少为1e-37到1e37。
就C标准而言,浮点数的表示方法是未指定的。第6.2.6节涵盖了类型的表示。特别地,6.2.6.1p1声明:“除了本分语句所述的情况外,所有类型的表示都是未指定的。”在第6.2.6节中没有提到浮点类型。因此,实现可以使用任何它选择的表示方法,并且不需要记录该决策。
foobar
的例程时失败。 - Eric Postpischil