std.overflow 包

功能介绍

overflow 包提供了整数运算溢出时的处理能力。

在整数运算时,若运算结果大于其类型最大值或小于其类型最小值即是溢出。默认情况下,出现溢出时会抛出异常。

overflow 包提供了四种溢出处理策略,并定义了对应的接口,列举如下:

策略接口描述
返回 OptionCheckedOp当整数运算出现溢出,返回 None
饱和SaturatingOp当计算结果大于目标类型的 MAX 值,返回 MAX 值;当计算结果小于目标类型的 MIN 值,返回 MIN 值。
抛出异常ThrowingOp当整数运算出现溢出,抛出异常。
高位截断WrappingOp当整数运算出现溢出,将运算结果中超出目标类型位数的高位截断。

overflow 包中通过扩展为所有的整数类型提供了这些接口的实现,用户可以用同样的方式为其他类型实现 overflow 接口。

API 列表

接口

接口名功能
CarryingOp提供返回整数运算是否发生了截断以及运算结果的接口。
CarryingPow提供使用 wrapping 策略的幂运算接口。
CheckedOp当整数运算出现溢出,返回 None
CheckedPow提供返回 Option 策略的幂运算接口。
SaturatingOp当整数运算出现溢出,饱和处理。
SaturatingPow提供饱和策略的幂运算接口。
ThrowingOp当整数运算出现溢出,抛出异常。
ThrowingPow提供使用抛出异常策略的幂运算接口。
WrappingOp当整数运算出现溢出,将运算结果中超出目标类型位数的高位截断。
WrappingPow提供使用高位截断策略的幂运算接口。

异常类

类名功能
OvershiftException移位运算时移位位数超过操作数位数时抛出的异常。
UndershiftException移位运算时移位位数小于 0 时抛出的异常。