如果不支持附件 F,C11(及更高版本)是否对引发各种运算符的浮点异常没有任何要求?
C11 (and later) does not impose any requirements on raising floating-point exceptions for various operators if Annex F is not supported?
考虑到附件 F 不受支持且实现不遵循 IEEE 754。
那么 C11 对这些运算符引发浮点异常的要求是什么:
Equality operators: == !=
Relational operators: > >= < <=
我找不到这样的要求。这是否意味着它们未定义?
注意:至少对于“算术运算”,我们有这个(C11,5.2.4.2.2 浮点类型的特征 ):
A quiet NaN propagates through almost every arithmetic operation without raising a floating-point exception; a signaling NaN generally raises a floating-point exception when occurring as an arithmetic operand.
但是,它表示“几乎 每个算术运算”,即 w/o 确切地提到了哪个。
I cannot find such requirements. Does it mean that they are not defined?
我也没有找到任何此类要求,也没有找到可以构建此类要求的任何内容。在这方面,可能需要注意脚注 22(在某种程度上)澄清了 5.2.4.2.2/3 的引用部分:
IEC 60559:1989 specifies quiet and signaling NaNs. For implementations
that do not support IEC 60559:1989, the terms quiet NaN and signaling
NaN are intended to apply to encodings with similar behavior.
对于不支持附件 F 的实现,“几乎所有算术运算”都应该理解为“类似”的上下文。
据我所知,没有给出具体细节,我认为这是故意的。 C 传统上支持多种硬件,尤其是浮点行为。通常,C 实现不会将程序与它们 运行.
所在的 FP 硬件的行为隔离开来
考虑到附件 F 不受支持且实现不遵循 IEEE 754。
那么 C11 对这些运算符引发浮点异常的要求是什么:
Equality operators: == !=
Relational operators: > >= < <=
我找不到这样的要求。这是否意味着它们未定义?
注意:至少对于“算术运算”,我们有这个(C11,5.2.4.2.2 浮点类型的特征
A quiet NaN propagates through almost every arithmetic operation without raising a floating-point exception; a signaling NaN generally raises a floating-point exception when occurring as an arithmetic operand.
但是,它表示“几乎 每个算术运算”,即 w/o 确切地提到了哪个。
I cannot find such requirements. Does it mean that they are not defined?
我也没有找到任何此类要求,也没有找到可以构建此类要求的任何内容。在这方面,可能需要注意脚注 22(在某种程度上)澄清了 5.2.4.2.2/3 的引用部分:
IEC 60559:1989 specifies quiet and signaling NaNs. For implementations that do not support IEC 60559:1989, the terms quiet NaN and signaling NaN are intended to apply to encodings with similar behavior.
对于不支持附件 F 的实现,“几乎所有算术运算”都应该理解为“类似”的上下文。
据我所知,没有给出具体细节,我认为这是故意的。 C 传统上支持多种硬件,尤其是浮点行为。通常,C 实现不会将程序与它们 运行.
所在的 FP 硬件的行为隔离开来