mirror of
https://github.com/KaiserY/trpl-zh-cn
synced 2024-11-14 04:41:49 +08:00
Wrap should be translated as "回绕"
This commit is contained in:
parent
9d756a7b66
commit
3fe5899a3a
@ -63,9 +63,9 @@ let guess: u32 = "42".parse().expect("Not a number!");
|
||||
>
|
||||
> 比方说有一个 `u8` ,它可以存放从零到 `255` 的值。那么当你将其修改为 `256` 时会发生什么呢?这被称为 “整型溢出”(“integer overflow” ),这会导致以下两种行为之一的发生。当在 debug 模式编译时,Rust 检查这类问题并使程序 *panic*,这个术语被 Rust 用来表明程序因错误而退出。第九章 [“`panic!` 与不可恢复的错误”][unrecoverable-errors-with-panic] 部分会详细介绍 panic。
|
||||
>
|
||||
> 在 release 构建中,Rust 不检测溢出,相反会进行一种被称为二进制补码包装(*two’s complement wrapping*)的操作。简而言之,值 `256` 变成 `0`,值 `257` 变成 `1`,依此类推。依赖整型溢出被认为是一种错误,即便可能出现这种行为。如果你确实需要这种行为,标准库中有一个类型显式提供此功能,[`Wrapping`][wrapping]。
|
||||
> 在 release 构建中,Rust 不检测溢出,相反会进行一种被称为二进制补码回绕(*two’s complement wrapping*)的操作。简而言之,比此类型能容纳最大值还大的值会回绕到最小值,值 `256` 变成 `0`,值 `257` 变成 `1`,依此类推。依赖整型回绕被认为是一种错误,即便可能出现这种行为。如果你确实需要这种行为,标准库中有一个类型显式提供此功能,[`Wrapping`][wrapping]。
|
||||
> 为了显式地处理溢出的可能性,你可以使用标准库在原生数值类型上提供的以下方法:
|
||||
> - 所有模式下都可以使用 `wrapping_*` 方法进行包装,如 `wrapping_add`
|
||||
> - 所有模式下都可以使用 `wrapping_*` 方法进行回绕,如 `wrapping_add`
|
||||
> - 如果 `checked_*` 方法出现溢出,则返回 `None`值
|
||||
> - 用 `overflowing_*` 方法返回值和一个布尔值,表示是否出现溢出
|
||||
> - 用 `saturating_*` 方法在值的最小值或最大值处进行饱和处理
|
||||
|
Loading…
Reference in New Issue
Block a user