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