小编Vei*_*kej的帖子

在C11或C99中浮点到有符号整数转换时的饱和行为?

我只是想知道C11或C99在这方面提供了什么保证,如果有的话.

根据经验,似乎当我将浮点值(无论其精度如何)转换为有符号整数时,只要浮点值在该有符号整数范围内无法表示,即使在事件中,我也会获得"良好"饱和度浮点值为正或负无穷大(但我不知道或不关心NaN情况).

这里有一个微妙的问题,即在某些情况下,舍入行为的差异可能导致饱和,而在其他情况下则不会,尤其是当我们正好在饱和边界的边缘时.我并不担心.我的问题是,一旦浮点机制决定了它需要输出的整数(这是平台相关的),但是如果所述整数位于目标有符号整数范围之外(与平台无关) ),是否由规范保证饱和度.

我的默认理解是,我所看到的仅仅是底层硬件的便利性,并且由于签名溢出未定义,因此无法保证此类行为.我希望我错了,因为我讨厌签名溢出,并试图避免它.所以是的,我也对转换为无符号整数的情况感兴趣.

虽然我在这,但负0怎么样?这个值是否保证转换为整数零,即使在某种意义上你可以把它想象为负epsilon,它通常会舍入到-1?

c floating-point integer overflow

5
推荐指数
1
解决办法
1162
查看次数

标签 统计

c ×1

floating-point ×1

integer ×1

overflow ×1