Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编译器&x27;s FP基于非IEEE 754:这样的C编译器是否符合C标准?_C_Floating Point_Ieee 754_Standards Compliance - Fatal编程技术网

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

C编译器&x27;s FP基于非IEEE 754:这样的C编译器是否符合C标准?,c,floating-point,ieee-754,standards-compliance,C,Floating Point,Ieee 754,Standards Compliance,如果C编译器的FP基于非IEEE 754,那么该C编译器是否符合C标准?就所涉及的而言,用于浮点数的表示是未指定的 第6.2.6节涵盖了类型的表示。特别是6.2.6.1p1规定: 除本款规定外,所有类型的表示均未指定 第6.2.6节中没有提到浮点类型。因此,一个实现可以使用它选择的任何表示形式,并且不需要记录该决定。如果实现表示它符合IEEE 754/IEC 60559(\u STDC\u IEC\u 559\u),它必须这样做 但C标准不要求: 不定义\uuuu STDC\u IEC\uu55

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

就所涉及的而言,用于浮点数的表示是未指定的

第6.2.6节涵盖了类型的表示。特别是6.2.6.1p1规定:

除本款规定外,所有类型的表示均未指定


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

如果实现表示它符合IEEE 754/IEC 60559(
\u STDC\u IEC\u 559\u
),它必须这样做

但C标准不要求:

  • 不定义
    \uuuu STDC\u IEC\uu559\uuuu
    的实施不需要符合这些规范

  • 例如,C不要求二进制浮点-最低要求包括,任何浮点类型的范围必须至少为1e-37到1e37?您要问的实际问题是“如果编译器执行X,那么该特定行为是否不兼容?”这是因为编译器可以执行X,这本身就是兼容的,但编译器也可以执行Y,这是不兼容的。例如,编译器可能在其所有浮点行为上完全符合C标准,但只要源代码包含名为
    foobar
    @EricPostpischil:的例程,就会失败,这将使学究达到极限!在我看来,这个问题很清楚,写得也很好。@TonyK:这张海报写了几十个关于C标准和IEEE 754的迂腐问题。这就是他们所追求的。@Eric博士:哈哈!是的,你说得对。很抱歉。这意味着未指定浮点数的位级表示形式。但是,5.2.4.2.2中规定了浮点类型的特征。浮点类型必须将有效的数字表示为符号和固定基数中的固定位数乘以基数,形成具有固定限制的指数,可以选择加上无穷大和N。