|
|
@ -289,6 +289,18 @@ fn main() {
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
对于移位运算,Rust 会检查它是否超出改整型的位数范围,如果超出,则会报错 overflow。比如,一个 8 位的整型,如果试图移位 8 位,就会报错,但如果移位 7 位就不会。Rust 这样做的理由也很简单,如果移位太多,那么这个移位后的数字就是全 0 或者全 1,所以移位操作不如直接写 0 或者 -1,这很可能意味着这里的代码是有问题的。需要注意的是,不论 debug 模式还是 release 模式,Rust 都会检查溢出。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
|
|
|
|
let a: u8 = 255;
|
|
|
|
|
|
|
|
let b = a>>7; // ok
|
|
|
|
|
|
|
|
let b = a<<7; // ok
|
|
|
|
|
|
|
|
let b = a>>8; // overflow
|
|
|
|
|
|
|
|
let b = a<<8; // overflow
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 序列(Range)
|
|
|
|
## 序列(Range)
|
|
|
|
|
|
|
|
|
|
|
|
Rust 提供了一个非常简洁的方式,用来生成连续的数值,例如 `1..5`,生成从 1 到 4 的连续数字,不包含 5 ;`1..=5`,生成从 1 到 5 的连续数字,包含 5,它的用途很简单,常常用于循环中:
|
|
|
|
Rust 提供了一个非常简洁的方式,用来生成连续的数值,例如 `1..5`,生成从 1 到 4 的连续数字,不包含 5 ;`1..=5`,生成从 1 到 5 的连续数字,包含 5,它的用途很简单,常常用于循环中:
|
|
|
|