我只是想知道 C11 或 C99 在这方面提供了什么保证(如果有的话)。
根据经验,似乎当我将浮点值(无论其精度如何)转换为有符号整数时,只要浮点值在该有符号整数范围内不可表示,即使在事件中,我也会得到“很好”的饱和度浮点值是正负无穷大(但我不知道也不关心 NaN 的情况)。
这里有一个微妙的问题,即舍入行为的差异在某些情况下可能会导致饱和,但在其他情况下不会,特别是当我们正好处于饱和边界的边缘时。我对此并不担心。我的问题是,一旦浮点机器决定了它需要输出的整数(取决于平台),但如果所述整数位于目标有符号整数范围之外(与平台无关) ),无论饱和度是否由规范保证。
我的默认理解是,我所看到的只是底层硬件的便利,并且由于未定义有符号溢出,因此无法保证这种行为。我希望我错了,因为我讨厌签名溢出并试图避免它。所以是的,我也对转换为无符号整数的情况感兴趣。
当我在它的时候,负0呢?这个值是否保证转换为整数零,即使在某种意义上您可以将其视为负 epsilon,通常会四舍五入为 -1?