【发布时间】:2016-06-16 13:32:33
【问题描述】:
我的印象是整数类型的.checked_*(_) 方法可以帮助避免溢出。但是,.checked_shl(u32) 方法很高兴地移出了上面示例的最后一位。
我的印象错了吗? 的那个方法是什么?
(还想补充一点以避免轮班溢出,至少可以检查((~0) >> rhs) >= self 是否适用于无符号类型)
【问题讨论】:
-
我的猜测是它涵盖了 C 功能,其中移位超过位大小是 UB,但左移被认为更多的是位操作操作而不是算术操作,所以它不被算作算术溢出。但我同意这不一定是唯一明显的选择。
标签: rust integer-overflow