基于非IEEE 754的C编译器的FP:这样的C编译器是否符合C标准?

C compiler's FP based on non-IEEE 754: is such C compiler C standard compliant?

如果一个C编译器的FP是基于非IEEE 754的,那么这样的C编译器是否符合C标准?

C standard而言,用于浮点数的表示是未指定

第 6.2.6 节介绍了类型的表示。特别是,6.2.6.1p1 指出:

The representations of all types are unspecified except as stated in this subclause.

并且在第 6.2.6 节中没有任何地方提到浮点类型。因此,实现可以使用它选择的任何表示,并且不需要记录该决定。

如果实现表明它符合 IEEE 754/IEC 60559(__STDC_IEC_559__ 已定义),则它必须这样做。

但 C 标准没有要求。 C11 footnote 356:

  1. Implementations that do not define __STDC_IEC_559__ are not required to conform to these specifications.

C 不需要例如二进制浮点数 - 最低要求包括例如任何浮点类型的范围必须至少为 1e-37 到 1e37