diff --git a/src/basic/base-type/numbers.md b/src/basic/base-type/numbers.md index 2046157b6..071638550 100644 --- a/src/basic/base-type/numbers.md +++ b/src/basic/base-type/numbers.md @@ -44,7 +44,7 @@ Rust 使用一个相对传统的语法来创建整数(`1`,`2`,...)和浮 #### 整型溢出 -假设有一个 `u8` ,它可以存放从 0 到 255 的值。那么当你将其修改为范围之外的值,比如 256,则会发生**整型溢出**。关于这一行为 Rust 有一些有趣的规则:当在 debug 模式编译时,Rust 会检查整型溢出,若存在这些问题,则使程序在编译时 _panic_(崩溃,Rust 使用这个术语来表明程序因错误而退出)。 +假设有一个 `u8` ,它可以存放从 0 到 255 的值。那么当你将其修改为范围之外的值,比如 256,则会发生**整型溢出**。关于这一行为 Rust 有一些有趣的规则:当在 debug 模式编译并运行时,Rust 会检查整型溢出,若存在这些问题,则使程序在运行时 _panic_(崩溃,Rust 使用这个术语来表明程序因错误而退出)。 在当使用 `--release` 参数进行 release 模式构建时,Rust **不**检测溢出。相反,当检测到整型溢出时,Rust 会按照补码循环溢出(_two’s complement wrapping_)的规则处理。简而言之,大于该类型最大值的数值会被补码转换成该类型能够支持的对应数字的最小值。比如在 `u8` 的情况下,256 变成 0,257 变成 1,依此类推。程序不会 _panic_,但是该变量的值可能不是你期望的值。依赖这种默认行为的代码都应该被认为是错误的代码。